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