Spark笔记004-reduceByKey和groupBykey

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spark笔记004-reduceByKey和groupBykey相关的知识,希望对你有一定的参考价值。

参考技术A 突然听同事提起,就随便写一下的。

做一个word count小例子,

groupByKey的过程 MapPartitionsRDD=>ShuffledRDD=>MapPartitionsRDD=>MapPartitionsRDD
也就是说,它是原封不动的,把ShuffleMapTask的输出,来去到ResultTask的内存中,所以导致所有数据都进行了网络传输
而如果是reduceByKey,看下shuffleMapTask的write的实现,判断了是否有mapSideCombine,如果有,就先本地聚合,再写磁盘,再传输。

谈之前要有个共识,分布式系统,网络传输是占时间比重高也非常影响效率的部分。
说些比较飘浮的内容,这其实是mapreduce比较经典的map端combine,也就是说因为是分布式系统啊,首先把数据分散到各个节点并行计算,算完了再把数据传到其他节点去做最终结果计算。那么在第一次计算之前,如果能先做一些对最终结果计算有帮助的计算,再去传输,就能节省一点网络传输时间。
说些更飘浮的内容啊,mr这种计算是为了算结果,也就是把数据的抽象程度变高了,那么,能越早的接近最终结果,越能节约时间。

如果有hadoop基础就知道,map端combine和reduce端combine逻辑一致才能得到最终结果。
如果不是,那就是如果需要对单key的所有value放在一起才能计算的逻辑不合适做这种优化。

以上是关于Spark笔记004-reduceByKey和groupBykey的主要内容,如果未能解决你的问题,请参考以下文章

oracle11gr2笔记

Spark学习笔记——安装和WordCount

spark笔记

Spark学习笔记——Spark上数据的获取处理和准备

Spark学习笔记——数据读取和保存

Spark学习笔记