一、資料傾斜發生的原理
1、確定資料傾斜發生在第幾個stage中。
可以通過spark web ui來檢視當前執行到了第幾個stage。並深入看一下當前這個stage各個task分配的資料量及執行時間
2、根據stage劃分原理,推算出來發生傾斜的那個stage對應**中的哪一部分。
3、分析一下那個執行了shuffle操作並且導致了資料傾斜的rdd/hive表,檢視一下其中key的分布情況。
二、資料傾斜解決方案
解決方案一:使用hive etl預處理資料
解決方案二:過濾少數導致傾斜的key
解決方案三:提高shuffle操作的並行度
解決方案四:兩階段聚合(區域性聚合+全域性聚合)
解決方案五:將reduce join轉為map join
解決方案六:取樣傾斜key並分拆join操作
解決方案七:使用隨機字首和擴容rdd進行join
解決方案八:多種方案組合使用
在實踐中發現,很多情況下,如果只是處理較為簡單的資料傾斜場景,那麼使用上述方案中的某一種基本就可以解決。但是如果要處理乙個較為複雜的資料傾斜場景,那麼可能需要將多種方案組合起來使用。比如說,我們針對出現了多個資料傾斜環節的spark作業,可以先運用解決方案一和二,預處理一部分資料,並過濾一部分資料來緩解;其次可以對某些shuffle操作提公升並行度,優化其效能;最後還可以針對不同的聚合或join操作,選擇一種方案來優化其效能。大家需要對這些方案的思路和原理都透徹理解之後,在實踐中根據各種不同的情況,靈活運用多種方案,來解決自己的資料傾斜問題。
spark調優之資料傾斜
問題出現的原因 資料傾斜的表現 資料傾斜的表現 遇到這種方式問題莫慌看思路 問題 資料傾斜會導致資料溢位,可能是其中的某個task分配了大量的資料,執行出錯,導致資料傾斜,資料溢位.1.方案一 聚合源資料 只針對常見的聚合操作的情況 2.方案二 使用過濾的方法 只針對只使用部分資料的情況 3.方案三...
spark效能調優 資料傾斜
1.資料傾斜發生時的現象 絕大多數task執行得都非常快,但個別task執行極慢。比如,總共有1000個task,997個task都在1分鐘之內執行完了,但是剩餘兩三個task卻要一兩個小時。這種情況很常見。原本能夠正常執行的spark作業,某天突然報出oom 記憶體溢位 異常,觀察異常棧,是我們寫...
Hive調優 資料傾斜
1 通常情況下,作業會通過input的目錄產生乙個或者多個map任務。主要的決定因素有 input的檔案總個數,input的檔案大小,集群設定的檔案塊大小 目前為128m,可在hive中通過set dfs.block.size 命令檢視到,該引數不能自定義修改 2 舉例 a 乙個大檔案 假設inpu...