计算机系统应用教程网站

网站首页 > 技术文章 正文

大数据优化:Spark算子调优_reduceByKey预聚合

btikc 2024-10-12 11:41:12 技术文章 10 ℃ 0 评论



大数据优化:Spark算子调优_reduceByKey预聚合

算子调优

reduceByKey预聚合

reduceByKey相较于普通的shuffle操作一个显著的特点就是会进行map端的本地聚合,map端会先对本地的数据进行combine操作,然后将数据写入给下个stage的每个task创建的文件中,也就是在map端,(对io有提升)对每一个key对应的value,执行reduceByKey算子函数。

reduceByKey算子的执行过程如图所示:


使用reduceByKey对性能的提升如下:

? 本地聚合后,在map端的数据量变少,减少了磁盘IO,也减少了对磁盘空间的占用;

? 本地聚合后,下一个stage拉取的数据量变少,减少了网络传输的数据量;

? 本地聚合后,在reduce端进行数据缓存的内存占用减少;

? 本地聚合后,在reduce端进行聚合的数据量减少。


基于reduceByKey的本地聚合特征,我们应该考虑使用reduceByKey代替其他的shuffle算子,例如groupByKey。

reduceByKey与groupByKey的运行原理如图所示:


groupByKey原理



reduceByKey原理

根据上图可知,groupByKey不会进行map端的聚合,而是将所有map端的数据shuffle到reduce端,然后在reduce端进行数据的聚合操作。

由于reduceByKey有map端聚合的特性,使得网络传输的数据量减小,因此效率要明显高于groupByKey。

你的赞,我都当成喜欢。

专注分享大数据技术&智能技术&基础&实战,干货,资料。


关注本号,让更多人了解技术,让技术造福更多人。欢迎转发传播,感谢您的关注,谢谢。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表