flink入门(四)——window概念和时间、水位线
一、窗口概述
窗口的概念:用来将无限流切分为有限流,分发到有限大小的桶中进行处理
窗口的分类:大致分为时间窗口和计数窗口
窗口的边界:左闭右开
二、窗口介绍
1.滚动时间窗口
由固定的窗口长度控制,不会有重叠
2.滑动时间窗口
由窗口size和滑动距离控制,元素会有重叠,当然,步长=size的时候,将会是没有重叠的滚动时间窗口
3.会话窗口
超过一定距离,就视为一个窗口,一个会话
三、window的使用
1.使用入门示例:(根据参数个数可以知道是哪种类型的窗口)
2.创建各种类型的window示例:
3.窗口函数
四、flink中的时间
时间概念;
在代码中设置event TIme的方法:
当然,有时候是会出现event Time受网络等影响,出现乱序问题!
类似做班车时,到了发车时间点,却发现乘客还有一些未到齐,此时通常会有“等几分钟”的操作。这个操作对比在flink中就是通过水位线watermark,
来实现等几分钟的操作,等乱序的元素进入窗口了再“发车”!
3.水位线的概念
水位线的特点:
图中示例:右边数据1来的时候,插入一个水位2,表示2以前的数据都来了,后续的watermark类似的原理
在面对多分区时,会以水位最低的分区的watermark作为最终的watermark,类似木桶理论,以最短的为准。
watermark代码中的实践: