@Author : Spinach | GHB
@Link : http://blog.youkuaiyun.com/bocai8058
0 算子reducebykey
reduceByKey,相较于普通的shuffle操作(比如groupByKey),它的一个特点,就是说,会进行map端的本地聚合。
对map端给下个stage每个task创建的输出文件中,写数据之前,就会进行本地的combiner操作,也就是说对每一个key,对应的values,都会执行你的算子函数( _ + _ )
- 用reduceByKey对性能的提升:
- 在本地进行聚合以后,在map端的数据量就变少了,减少磁盘IO。而且可以减少磁盘空间的占用。
- 下一个stage,拉取数据的量,也就变少了。减少网络的数据传输的性能消耗。
- 在reduce端进行数据缓存的内存占用变少了。
- reduce端,要进行聚合的数据量也变少了。
1 算子groupbykey
groupByKey会对每一个RDD中的value值进行聚合形成一个序列(Iterator),此操作发生在reduce端,所以势必会将所有的数据通过网络进行传输,造成不必要的浪费。同时如果数据量十分大,可能还会造成OutOfMemoryError。
引用:https://blog.youkuaiyun.com/wuxintdrh/article/details/81407859 | https://www.cnblogs.com/bonelee/p/7111395.html