資料傾斜的原因
1.key 分布不均勻
2.業務資料本身的特性
3.sql 語句造成資料傾斜
如何解決資料傾斜
1.hive 設定 hive.map.aggr=true,hive.groupby.skewindata=true
2.有資料傾斜的時候進行負載均衡,當選項設定為 true,生成的查詢計畫會有兩個 mr job。第乙個 mr job 中, map 的輸出結果集合會隨機分布到 reduce 中,每個 reduce 做部分聚合操作,並輸出結果,這樣處理的結果是相同 group by key 有可能被分發到不同的 reduce 中,從而達到負載均衡的目的;第二個 mr job 在根據預處理的資料結果按照group by key 分布到 reduce 中(這個過程可以保證相同的 group by key 被分布到同乙個 reduce 中),最後完成最終的聚合操作。
3.sql 語句調整:
1.選用 join key 分布最均勻的表作為驅動表。做好列裁剪和 filter 操作,以達到兩表join 的時候,資料量相對變小的效果。
2.大小表 join: 使用 map join 讓小的維度表(1000 條以下的記錄條數)先進記憶體。在 map 端完成 reduce。
3.大表 join 大表:把空值的 key 變成乙個字串加上乙個隨機數,把傾斜的資料分到不同的 reduce 上,由於 null 值關聯不上,處理後並不影響最終的結果。
4.count distinct 大量相同特殊值:count distinct 時,將值為空的情況單獨處理,如果是計算 count distinct,可以不用處理,直接過濾,在做後結果中加 1。如果還有其他計算,需要進行 group by,可以先將值為空的記錄單獨處理,再和其他計算結果進行 union。
什麼是資料傾斜,怎麼解決資料傾斜?
相信很多接觸mapreduce的朋友對 資料傾斜 這四個字並不陌生,那麼究竟什麼是資料傾斜?又改怎樣解決這種該死的情況呢?何為資料傾斜?正常的資料分布理論上都是傾斜的,就是我們所說的2 8原理 80 的財富集中在20 的人手中,80 的使用者只使用20 的功能,20 的使用者貢獻了80 的訪問量,不...
怎麼解決資料傾斜問題?
本文面向的讀者是從事資料分析 資料處理 etl 等相關工作的朋友們,相信大家在工作中一定遇到過資料傾斜的問題,讀完本文,你會了解到資料傾斜的定義及其危害 產生的原因及應對措施 常見傾斜場景及解決辦法等知識,相信對你今後處理資料傾斜問題會有一定的幫助。目前流行的大資料相關的計算框架之所以能夠處理大量的...
Hive 資料傾斜原因及解決方法彙總
1 資料傾斜根本原因 由於資料分布不均勻,導致map端讀取的資料分布不均勻 資料長尾分布 從而使得map處理的資料量差異過大。2 解決思路 hive是分階段執行的,map處理資料量的差異取決於上乙個stage的reduce輸出,所以解決的根本方法就是如何將資料均勻的分布到各個reduce中 3 出現...