spark新能优化之reduceBykey和groupBykey的使用

本文探讨了在MapReduce框架中ReduceByKey与GroupByKey的区别及其使用场景。ReduceByKey通过在Map端进行局部聚合来减少网络传输量,适用于大多数聚合操作。而GroupByKey则将所有相同键的数据发送到同一个Reducer,在Reducer端进行聚合,这可能导致较大的数据倾斜。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

val counts = pairs.reduceByKey(_ + _)

val counts = pairs.groupByKey().map(wordCounts => (wordCounts._1, wordCounts._2.sum))

如果能用reduceByKey,那就用reduceByKey,因为它会在map端,先进行本地combine,可以大大减少要传输到reduce端的数据量,减小网络传输的开销。

只有在reduceByKey处理不了时,才用groupByKey().map()来替代。

 

因为reduceBykey聚合后传输的数据量就变少了,而groupBykey没聚合会传递到taskResult上面数据量比较大

转载于:https://www.cnblogs.com/yaohaitao/p/5667747.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值