内容纲要
概要描述
slipstream流入的表不会触发物化视图2.0 的更新,需要其他手段来更新这个视图。可以参考如下步骤,开个微批任务定时更新该视图。
注意:如果通过slipstream执行这个物化视图的更新比较慢的话,可以考虑放quark上跑(通过workflow定时调度,或者crontab beeline定时调度 等),Slipstream上的batch资源是比较少的。(SLA-52318)
详细说明
一. 前置条件
周期更新需要关闭物化视图的自动更新(默认未开启)
set quark.mbo.rebuild.auto=false;
创建一个物化视图2.0:
create table t_base(id int, name string) stored as holodesk;
create view v1 with materialized stored as holodesk as select id,name from t_base;
二. 创建微批任务
1.创建微批调度任务, 设置更新周期为1分钟
CREATE streamjob mv_rebuild_job AS (
"alter view v1 rebuild"
)jobproperties(
"morphling.job.schedule.interval"="60000", -- 调度周期,单位ms
"quark.mbo.force.rebuild"="true" -- 强制更新物化视图,在流入源表的场景需要开启
);
2.启动微批调度任务
start streamjob mv_rebuild_job;
3.查看定时任务
list streamjobs;
4.停止定时任务
stop streamjob mv_rebuild_job;
三. 查询物化视图
1.开启更新延迟参数,允许查询一段时间内的旧数据
set quark.view.materialized.refresh.time=10; -- 单位s,应该略大于调度周期
set quark.view.materialized.rewrite.enable=true; -- 查询改写参数
2.查询
select * from v1;