@Author : Spinach | GHB
@Link : http://blog.csdn.net/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.csdn.net/wuxintdrh/article/details/81407859 | https://www.cnblogs.com/bonelee/p/7111395.html