大資料 筆經(Spark資料傾斜)

2021-09-12 07:05:34 字數 735 閱讀 1698

小趙在測試spark的時候,寫了如下的**:

dolines = sc.textfile("data.txt")

pairs = lines.map(lambda s: (s, 1))

counts = pairs.groupbykey(lambda a, b: a + b)

結果執行時等待了一段時間直接報錯,data.txt檔案較大,小趙對其進行抽樣後結果如下:

data

newname

work

as請分析報錯的原因以及解決方案

報錯是由於資料傾斜導致的

資料傾斜的原因,由於key本身分布不均衡(重要),或者shuffle時的併發度不夠,過多的資料在同乙個task中執行,把executor撐爆。

解決方案(前三點任一)

1)隔離執行,將異常的key過濾出來單獨處理,最後與正常資料的處理結果進行union操作。

2)對key先新增隨機值,進行操作後,去掉隨機值,再進行一次操作:

將原始的 key 轉化為 key + 隨機值(例如random.nextint)

對資料進行 reducebykey(func)

將 key + 隨機值 轉成 key

再對資料進行 reducebykey(func)

3)使用reducebykey 代替 groupbykey,reducebykey已經做過一次merge,節約了記憶體

4)調高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 資料傾斜兩大直接致命...