hive資料傾斜問題:
傾斜原因: map輸出資料按key hash分配到reduce中,由於key分布不均勻、或者業務資料本身的特點。】【等原因造成的reduce上的資料量差異過大。
1.1)key分布不均勻
1.2)業務資料本身的特性
1.3)sql語句造成資料傾斜
解決方案:
1>引數調節:
hive.map.aggr=true
hive.groupby.skewindata=true
有資料傾斜的時候進行負載均衡,當選項設定為true,生成的查詢計畫會有兩個mr job。第乙個mr job中,map的輸出結果集合會隨機分布到reduce中,每個reduce做部分聚合操作,並輸出結果,這樣處理的結果是相同group by key有可能被分發到不同的reduce中,從而達到負載均衡的目的;第二個mr job在根據預處理的資料結果按照 group by key 分布到reduce中(這個過程可以保證相同的 group by key 被分布到同乙個reduce中),最後完成最終的聚合操作。
2>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
HIVE 資料傾斜
解決資料傾斜,歸根結底是使map的輸出資料更均勻的分布到reduce中去。1 join 1 其中乙個表較小,但是key集中。分發到某乙個或幾個reduce上的資料遠高於平均值 2 大表與大表,但是分桶的判斷欄位0值或空值過多。這些空值都由乙個reduce處理,非常慢 2 group by group...
hive資料傾斜
key 分布不均勻 業務資料本身的特性 建表考慮不周全 某些 hql 語句本身就存在資料傾斜 1.空值產生的資料傾斜 在日誌中,常會有資訊丟失的問題,比如日誌中的 user id,如果取其中的 user id 和使用者表中的 user id 相關聯,就會碰到資料傾斜的問題。解決方案 1 user i...
hive 資料傾斜介紹
hive在跑資料時經常會出現資料傾斜的情況,使的作業經常reduce完成在99 後一直卡住,最後的 花了幾個小時都沒跑完,這種情況就很可能是資料傾斜的原因,解決方法要根據具體情況來選擇具體的方案 這種情況可以對異常值賦乙個隨機值來分散key 如 selectuserid name fromuser ...