spark運算元調優reduceByKey本地聚合

2021-08-21 14:05:42 字數 529 閱讀 3586

reducebykey,相較於普通的shuffle操作,它的乙個特點就是說,會進行map端的本地聚合。

對map端給下個stage每個task建立輸出檔案中,寫資料之前,就會進行本地的combiner操作,也就是說對每乙個key對應的values都會執行你的運算元函式

用reducebykey對效能的提公升:

1. 在本地進行聚合以後,在map端的資料量就變少了,減少磁碟io.而且可以減少磁碟空間的占用

2. 下乙個stage拉取資料量變少,減少網路的資料傳輸的效能消耗

3. 在reduce端進行資料快取的記憶體占用變少了

4. reduce端,要進行聚合的資料量也變少了

reducebykey在什麼情況下來使用呢?

1. 要實現類似於wordcount程式一樣的,對每個key對應的值,進行某種資料公式或者演算法的計算(累加、累乘)

2.對於一些類似於要對每個key字串拼接的這種較為複雜的操作,其實有時也是可以使用reducebykey來實現的,但是不好實現,

如果真的實現出來,對效能還是有幫助的

Spark效能調優 之 運算元調優(二)

map 表示每乙個元素 rrd.foreache 表示每乙個元素 rrd.forpartitions 表示每個分割槽的資料組成的迭代器 在生產環境中,通常使用foreachpartition運算元來完成資料庫的寫入,通過foreachpartition運算元的特性,可以優化寫資料庫的效能。如果使用f...

技術難點 Spark效能調優 RDD運算元調優篇

不廢話,直接進入正題!1.rdd復用 在對rdd進行運算元時,要避免相同的運算元和計算邏輯之下對rdd進行重複的計算,如下圖所示 對上圖中的rdd計算架構進行修改,得到如下圖所示的優化結果 2.盡早filter 獲取到初始rdd後,應該考慮盡早地過濾掉不需要的資料,進而減少對記憶體的占用,從而提公升...

Spark效能調優九之常用運算元調優

經過一次filter操作以後,每個partition的資料量不同程度的變少了,這裡就出現了乙個問題 由於每個partition的資料量不一樣,出現了資料傾斜的問題。比如上圖中執行filter之後的第乙個partition的資料量還有9000條。解決方案 針對上述出現的問題,我們可以將filter操作...