Spark算子groupbykey與reducebykey區別

@Author  : Spinach | GHB
@Link    : http://blog.csdn.net/bocai8058

0 算子reducebykey

reduceByKey,相較於普通的shuffle操作(比如groupByKey),它的一個特點,就是說,會進行map端的本地聚合。

對map端給下個stage每個task創建的輸出文件中,寫數據之前,就會進行本地的combiner操作,也就是說對每一個key,對應的values,都會執行你的算子函數( _ + _ )

  • 用reduceByKey對性能的提升:
  1. 在本地進行聚合以後,在map端的數據量就變少了,減少磁盤IO。而且可以減少磁盤空間的佔用。
  2. 下一個stage,拉取數據的量,也就變少了。減少網絡的數據傳輸的性能消耗。
  3. 在reduce端進行數據緩存的內存佔用變少了。
  4. 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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章