一、概述:
Flink中Batch是Streaming的一个特例,因此Flink底层引擎是一个流式引擎,在上面实现了流处理和批处理。而Window就是从Streaming到Batch的桥梁。
二、flink窗口类型:
Flink 提供了丰富的窗口类型,可以根据具体的场景和需求选择不同的窗口类型例如:
1.滚动窗口(Tumbling Windows):将数据流按照固定大小的窗口进行划分,每个窗口内的数据处理完毕后,窗口的计算结果会被输出。
2.滑动窗口(Sliding Windows):将数据流按照固定的大小和固定的滑动步长进行划分,每个窗口内的数据处理完毕后,窗口的计算结果会被输出。
3.会话窗口(Session Windows):将数据流按照时间间隔进行分割,每个分段内的数据处理完毕后,窗口的计算结果会被输出。
4.全局窗口(Global Windows):将整个数据流作为一个窗口进行处理,可以用来进行全局的计算操作。
5.增量窗口(Incremental Windows):在数据流的处理过程中,持续对数据进行计算,而不是等待整个窗口的数据全部到齐后再进行计算。
6.Purging Window:清除窗口,当窗口中的数据达到一定的数量或时间时,将窗口中的数据全部清除。可以使用CountTrigger
和PurgingTrigger
结合Evictor
函数来实现。
7.Evicting Window:驱逐窗口,当窗口中的数据达到一定的数量或时间时,将旧数据驱逐出窗口。可以使用CountTrigger
和Evictor
函数来实现。
8.Custom Trigger:自定义触发器,根据业务需求自定义触发器行为,可以使用Trigger
接口来实现。
三、Window聚合分类:
Window聚合操作主要分为两种:一种是增量聚合,一种是全量聚合。
1.增量聚合:
增量聚合是指窗口每进入一条数据就计算一次
2. 全量聚合:
全量聚合是指在窗口触发的时候才会对窗口内的所有数据进行一次计算。
3.其他聚合方式:
flink还有很多其他的聚合方式如:时间窗口聚合按照时间范围对数据进行分组聚合,计数窗口:按照数据条数对数据进行分组聚合等等,通过这些不同的聚合方式最终造就了flink的各式各样的窗口类型,也帮助使用者更加灵活的处理数据需求