在Flink Window窗口计算中,对窗口中数据聚合计算分为2种类型:全量聚合和增量聚合。
全量聚合
指在窗口触发的时候才会对窗口内的所有数据进行一次计算(等窗口的数据到齐,才开始进行聚合计算,可实现对窗口内的数据进行排序等需求
- apply
- process
增量聚合
指窗口每进入一条数据就计算一次,窗口保存一份聚合中间数据,当触发窗口计算的时候直接返回中间值
- reduce
- aggregate
- sum/max/min
区别
对窗口中数据聚合,提供2种方式:
- 全量聚合,使用apply算子和process算子
当触发窗口时,一起对窗口中数据进行计算
【对窗口中所有数据排序、获取窗口信息,比如时间窗口,获取窗口开始时间和结束时间】
缺点:窗口数据量较大时,数据可能很多,一起处理,比较耗时
- 全量聚合,使用apply算子和process算子
-
增量聚合,使用reduce算子或aggregate算子及min\max\sum算子
窗口中来一条数据,计算一条数据,存储计算中间临时结果,当触发窗口计算时,直接返回计算中间结果值即可
【实时性提升,性能比较好,数据一进入窗口就计算,仅仅缓存计算中间值】
缺点:窗口数据无法排序,无法获取窗口信息【基于时间窗口计算时,通常情况,需要获取窗口信息,知道对哪个窗口数据聚合】
-
解决方案
先增量聚合,然后全局聚合,这样就能即提高性能,也能获取窗口运行的信息
- Window 窗口数据聚合中,提供一种方式:先对窗口中数据增量聚合,触发窗口时,再对窗口数据全量聚合
先增量,后全量
1) 增量,窗口中来一条数据处理一条数据
2) 全量,直接返回增量聚合结果即可,主要目的获取窗口信息(窗口开始数据和结束时间)
网友评论