| 函数举例 | 聚合原理 | 使用举例 | 小结 | |
| 增量窗口函数 | ReduceFunction 、 AggregateFunction | 窗口内保存一个中间聚合结果,随着新元素的加入,不断对该值进行更 新。好处是节省空间 | 使用keyBy的情况举例: window(...) .keyby(_._1) .aggregate(new AggregateFunction{ ... },new keyedProcessFunction{ ... }) 增量窗口函数和全量窗口函数经常会结合在一起使用,先用增量窗口聚合,最后在全量窗口把汇总的结果输出 不使用keyBy的情况举例: timeWindowAll(...) . process ( new ProcessAllWindowFunction{ ... }) | ReduceFunction输入的元素和输出的元素类型需要一致;AggregateFunction的输入类型和输出类型可以不一致 |
| 全量窗口函数 | ProcessWindowFunction 、WindowFunction(使用keyBy), ProcessAllWindowFunction(不使用keyBy) | 收集窗口内的所有元素,并且在执行的时候对他们进行遍历。这种聚合函数通常需要占用更多的空间(收集一段时间的数据并且保存),但是它可以支持更复杂的逻辑 |



