020 Spark資料傾斜表現及解決方案

2021-10-10 02:27:54 字數 959 閱讀 9736

spark資料傾斜表現

資料傾斜產生的原因是:shuffle的時候,需要將各個節點的相同的key拉取到同乙個節點上,如果這個key對應的資料量非常大的時候,就會發生資料傾斜。

資料傾斜只會發生在shuffle過程中,spark引擎會觸發shuffle的rdd運算元有:distinct、repartition、reducebykey、groupbykey、aggregatebykey、join

需要shuffle的操作運算元上直接設定並行度或者使用spark.default.parallelism設定。如果是spark sql,還可通過set spark.sql.shuffle.partitions=num_tasks設定並行度。

該方法使用場景少,只能緩解資料傾斜,不能徹底解決資料傾斜。

通過spark的broadcast機制,將reduce join轉化為map join,避免shuffle,從而完全消除shuffle帶來的資料傾斜。

參與join的一側資料集足夠小,並且主要適用於join的場景,不適合聚合的場景,適用條件有限。

通過spark的reducebykey,統計每乙個key的數量,超過指定數量的key或者數量top的key,作為異常key。當然也可以使用sample對rdd進行抽樣後,進行key的統計。

該方法的特點是:簡單、粗暴,有一定的適用場景。

這個可以理解為大招

實際場景中可能需要上述方案的組合操作,比如:異常值過濾 + key值轉換:加隨機數,可以進行效能的優化:根據異常值,對rdd進行拆分:分別拆分成兩個rdd,對於沒有資料傾斜的,正常操作。對於有資料傾斜的加上隨機字首,再進行shuffle操作。

個人經驗:大部分資料傾斜問題,都是業務問題,了解你的資料分布、資料邏輯這個才是資料開發的王道。

Spark 資料傾斜

計算資料時,資料分散度不夠,導致大量資料集中到一台或幾台機器上計算。區域性計算遠低於平均計算速度,整個過程過慢。部分任務處理資料量過大,可能oom,任務失敗,進而應用失敗。1 executor lost driver oom shuffle過程出錯 2 正常執行任務突然失敗 3 單個executor...

spark資料傾斜問題

資料傾斜 加更大記憶體 跟cpu硬體是效能優化的根本之道 一 資料傾斜帶來的致命性後果 1.oom 根本原因資料太多 一般oom都是由於資料傾斜所致,spark基於jvm之上的 2.速度非常慢 二 資料傾斜的基本特徵 1.任務分配不均勻 2.個別task處理過度大量的資料 shuffle過程中遇到同...

Spark之資料傾斜

spark之資料傾斜 1 關於效能調優首先談資料傾斜,為什麼?1 因為如果資料傾斜,其他所有的調優都是笑話,因為資料傾斜主要導致程式跑步起來或者執行狀態不可用。2 資料傾斜最能代表spark水平的地方,spark是分布式的,如果理解資料傾斜說明你對spark執行機制瞭如指掌。2 資料傾斜兩大直接致命...