本文主要是介绍二十五:Flink聚合函数和累加器使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
提到了 Flink 所支持的窗口和时间类型,并且在第 25 课时中详细讲解了如何设置时间戳提取器和水印发射器。
实际的业务中,我们在使用窗口的过程中一定是基于窗口进行的聚合计算。例如,计算窗口内的 UV、PV 等,那么 Flink 支持哪些基于窗口的聚合函数?累加器又该如何实现呢?
Flink 支持的窗口函数
我们在定义完窗口以后,需要指定窗口上进行的计算。目前 Flink 支持的窗口函数包含 3 种:
- ReduceFunction 增量聚合
- AggregateFunction 增量聚合
- ProcessWindowFunction 全量聚合
最后还有一种 FlodFunction,但是在 Flink 1.9 版本后已经废弃,推荐使用 AggregateFunction 代替。
下面我们详细讲解以上 3 种窗口聚合函数的定义和使用。
ReduceFunction
ReduceFunction 基于两个类型一致的输入进行增量聚合,我们可以自定义 ReduceFunction 来增量聚合窗口内的数据。
可以这样定义自己的 ReduceFunction,覆写 reduce 方法:
DataStream<Tuple2<String, Long>> input = ...;
input.keyBy(<key selector>).window(<window assigner>).reduce(new ReduceFunction<Tuple2<String, Long>> {public Tuple2<String, Long> reduce(Tuple2<Stri
这篇关于二十五:Flink聚合函数和累加器使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!