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操作...