Flink框架中的窗口类别:时间窗口、计数窗口
本文重点
在flink中窗口是有很多种类型的,不同类型窗口可以解决不同的问题,本文我们将对此进行系统的学习,从而掌握Flink中所有的窗口类型。
按照窗口的驱动类型
一个窗口如何开始?如何结束?此时有两种方式:
1、按照时间:时间窗口
2、按照个数:计数窗口
时间窗口:
设定窗口的大小,假设为10分钟,那么[0,10)是一个窗口,[10,20)是一个窗口,而Flink的时间就是靠前面学习的水位线来推进的。
在Flink框架中TimeWindow表示窗口,TimeWindow有两个私有属性:start和end,分别表示窗口的开始的时间戳和结束的时间戳,单位为毫秒。
private final long start;
private final long end;
TimeWindow有maxTimestamp()方法,可以获取当前窗口中能够包含数据的最大时间戳:
public long maxTimestamp() { return end - 1; }
最大允许的时间戳就是end-1,这代表了窗口时间范围都是左闭右开的区间[start,end)。
计数窗口:
计数窗口没有时间的概念,假设设定计数为10,那么只要数据流的元素事件达到了10个就会关闭窗口触发计算,然后开启一个新的窗口。