1.滚动窗口
计算每天的pv,uv,可以开一个24h的窗口,统计窗口内数据情况。但是这样有一个问题,flink sql没有办法直接设置trigger,所以只能等待窗口结束后才会有计算结果输出。这往往不是我们想要的,针对这种情况,有两种解决办法,一种是设置参数,提前输出计算结果;另一种办法是开一分钟窗口(根据自己输出频率来设定窗口)做初步聚合,然后根据日期做二次聚合;
两种方式有一个区别,提前输出方式,因为窗口没有关闭,输出的数据是update,而二次聚合方式,因为窗口已经关闭,所以每分钟都会insert一条数据,当需要数据绘制曲线图时,推荐二次聚合方式,如果只是显示一个计算数字,则推荐使用提前输出方式;
提前输出所需设置参数:
// 设置 early fired
tableEnv.getConfig().getConfiguration().setBoolean("table.exec.emit.early-fire.enabled", true)
tableEnv.getConfig().getConfiguration().setString("table.exec.emit.early-fire.delay", "5000ms")
注意:这里的时间是指系统时间,而非时间事件。即每隔5秒钟输出数据。
完整代码如下
import org.apache.flink.streaming.api.TimeCharacteristic
import org.apache.flink.streaming.api.scala.StreamExecutionEnvironment
import org.apache.flink.table.api.EnvironmentSett

本文介绍如何利用 Flink SQL 实现滚动窗口和滑动窗口计算,包括 PV 和 UV 的统计方法及参数配置,并提供具体实现代码示例。
最低0.47元/天 解锁文章
1656

被折叠的 条评论
为什么被折叠?



