Flink之reduce操作

Flink的reduce操作是一种聚合操作,‌用于对数据进行分组或不分组的聚合计算,‌最终将数据聚合成一个元素。‌这个操作可以在分组的dataset上使用,‌也可以在不分组的dataset上使用。‌在分组的dataset上使用时,‌reduce操作应用用户定义的reduce函数将每个组减少为单个元素。‌对于每组输入元素,‌reduce函数连续地将元素对组合成一个元素,‌直到每个组只剩下一个元素。‌对于ReduceFunction,‌返回对象的key字段应与输入值匹配,‌这是因为reduce是可隐式组合的,‌并且从combine运算符发出的对象在传递给reduce运算符时再次按key分组。‌

具体来说,‌reduce操作适用于需要对数据进行聚合的场景,‌比如统计、‌计数等。‌例如,‌在日志分析中,‌可以使用reduce操作统计某个字段(‌如IP地址)‌的出现次数,‌或者统计某个单词在文本中出现的次数等。‌这种操作不仅限于分组数据,‌也可以直接应用于整个数据集,‌实现对整个数据集的聚合计算。‌

上图展示了reduce算子的原理:reduce在按照同一个Key分组的数据流上生效,它接受两个输入,生成一个输出,即两两合一地进行汇总操作,生成一个同类型的新元素。

reduce需要针对分组或者一个window(窗口)来执行,也就是分别对应于keyBy、window/timeWindow 处理后的数据,根据ReduceFunction将元素与上一个reduce后的结果合并,产出合并之后的结果

与简单聚合类似,reduce()操作也会将 KeyedStream 转换为 DataStream。它不会改变流的 元素数据类型,所以输出类型和输入类型是一样的。

 调用 KeyedStream 的 reduce()方法时,需要传入一个参数,实现 ReduceFunction 接口

实例1:相邻元素求和,定义tupple2类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

薛定谔的猫1982

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值