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

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上面数据量比较大

上一篇:图解C#的值类型,引用类型,栈,堆,ref,out


下一篇:Spark性能优化(1)——序列化、内存、并行度、数据存储格式、Shuffle