欢迎光临散文网 会员登陆 & 注册

Flink增量聚合函数:reduce和aggregate的区别是什么?

2023-08-11 11:41 作者:ingemar-  | 我要投稿

窗口函数,即数据划分窗口后可以调用的处理函数。

  • 全量函数:窗口先缓存所有元素,等到触发条件后对窗口内的全量元素执行计算。

  • 增量函数:窗口保存一份中间数据,每流入一个新元素,新元素与中间数据两两合一,生成新的中间数据。


增量聚合函数


指窗口每进入一条数据就计算一次

实现方法(常见的增量聚合函数如下):

  • reduce(reduceFunction)

  • aggregate(aggregateFunction)

  • sum()

  • min()

  • max()


reduce和aggregate的区别


reduce接受两个相同类型的输入,生成一个同类型输出,所以泛型就一个 <T>

maxBy、minBy、sum这3个底层都是由reduce实现的

aggregate的输入值、中间结果值、输出值它们3个类型可以各不相同,泛型有<T, ACC, R>


ReduceFunction


ReduceFunction定义了如何把两个输入的元素进行合并来生成相同类型的输出元素的过程,Flink使用ReduceFunction来对窗口中的元素进行增量聚合


AggregateFunction


AggregateFunction 比 ReduceFunction 更加的通用,它有三个参数:输入类型(IN)、累加器类型(ACC)和输出类型(OUT)

输入类型是输入流中的元素类型,AggregateFunction有一个add方法可以将一个输入元素添加到一个累加器中。该接口还具有创建初始累加器(createAccumulator方法)、将两个累加器合并到一个累加器(merge方法)以及从累加器中提取输出(类型为OUT)的方法。


Flink增量聚合函数:reduce和aggregate的区别是什么?的评论 (共 条)

分享到微博请遵守国家法律