简介
正常线上业务计算设置的window窗口比较大,比如1个小时,1天,甚至一周。那么是不是只能在窗口结束之后才能看到数据呢?对于实时的任务,每天或者一周结束的时候,才输出计算的结果,没有任何意义,我们需要的是实时更新的中间结果数据。比如实时的PV,UV等指标计算。下面介绍一下FlinkSQL如何提前触发窗口计算。
实现方式
在代码中设置如下两个参数:
- table.exec.emit.early-fire.enabled 开启提前触发窗口计算,并输出结果, 默认值: false
- table.exec.emit.early-fire.delay 提前触发窗口计算的间隔时间
TableConfig config = tenv.getConfig();
config.getConfiguration().setBoolean("table.exec.emit.early-fire.enabled",true);
config.getConfiguration().setString("table.exec.emit.early-fire.delay","10s");
//每10秒钟触发一次输出
不开启提前触发窗口
如下 demo,从 kafka 读取数据, 窗口聚合,输出一天的 pv、uv
-- kafka source
drop table if exists user_log;
CREATE TABLE user_log(
user_id V
|