微批调度实现周期更新物化视图2.0

  其他常见问题
内容纲要

概要描述


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;

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。