Spark 之 shuffle 相關的運算元

2021-09-25 04:22:20 字數 698 閱讀 3817

目錄

1、repartition 類

repartition類的操作:比如repartition、repartitionandsortwithinpartitions、coalesce等。

重分割槽: 一般會shuffle,因為需要在整個集群中,對之前所有的分割槽的資料進行隨機、均勻地打亂,然後把資料放入下游新的指定數量的分區內。

2、bykey類

bykey類的操作:比如reducebykey、groupbykey、sortbykey等。

bykey類的操作:因為你要對乙個key,進行聚合操作,那麼肯定要保證集群中,所有節點上的相同的key,一定是到同乙個節點上進行處理。

3、join類

join類的操作:比如join、cogroup等。

兩個rdd進行join,就必須將join 相同 key的資料,shuffle到同乙個節點上,然後進行相同key的兩個rdd資料的笛卡爾乘積。

4、使用建議

第一原則,能不用shuffle操作,就盡量不用shuffle操作,盡量使用不shuffle的操作;

第二原則,如果使用了shuffle操作,那麼肯定要進行shuffle的調優,甚至是解決碰到的資料傾斜的問題。

spark之shuffle引數優化

spark.shuffle.file.buffer預設32k shuffle write task端的緩衝區,到達閾值後,溢寫到磁碟。將數值調大,減少io操作,提公升整體效能 具體數值根據實際情況設定 spark.reducer.maxsizeinflight預設48m reduce shuffle...

Spark之Shuffle機制和原理

shuffle就是對資料進行重組,由於分布式計算的特性和要求,在實現細節上更加繁瑣和複雜 在mapreduce框架,shuffle是連線map和reduce之間的橋梁,map階段通過shuffle讀取資料並輸出到對應的reduce 而reduce階段負責從map端拉取資料並進行計算。在整個shuff...

Spark效能優化之Shuffle效能調優

一 shuffle效能調優 1,問題 shuffle output file lost?真正的原因是gc導致的!如果gc尤其是full gc產生通常會導致執行緒停止工作,這個時候下乙個stage的task在預設情況下就會嘗試重試來獲取資料,一般重試3次每次重試的時間為5s,也就是說預設情況下15s內...