原创大约 10 分钟
SessionWindow(会话窗口)
会话窗口按活动会话对对窗口进行区分。这种窗口和前面两种都不同,它既没有固定大小,也没有固定的开始时间和结束时间,它也不可能重叠,它完全是按照计算任务的活动状态来创建窗口的。
例如,如果某个计算任务量较大,那么它会持续通过会话窗口计算元素,直到任务结束;而如果暂时没有计算任务,那么一段时间之后窗口就会关闭。
这和浏览器或其他客户端上的用户会话机制是一样的。
会话窗口的代码模式如下。
原创大约 7 分钟
SlidingWindow(滑动窗口)
滑动窗口
除了有一个固定的大小,还有一个定时滑动
的步长。例如,统计10分内的用户注册人数,每2分钟统计一次。那么Flink
就会每2分钟统计一次过去10分钟内的用户注册量。
这就像在一小步一小步地往前滑动一样,这也是滑动
窗口名字的由来。
如果同一个计算任务由多个滑动窗口组成,那么这些窗口在时间区间上会出现重叠。
原创大约 16 分钟
窗口分类
在Flink中,窗口(Window)的作用是将无界流进行拆分,得到有限的数据集,使之变为有界流。
总的来说,Flink将窗口分为两大类。
-
基于时间驱动的
时间窗口
。例如,不管有多少数据,都是每30秒钟
创建一个窗口,然后在窗口中执行计算。 -
基于数据驱动的
计数窗口
。例如,不管多少时长,都是每10个元素
创建一个窗口,然后在窗口中执行计算。
原创大约 16 分钟