數據傾斜問題

一、數據傾斜的原因:核心原因是reduce段數據分佈不均勻,導致少量reduce子任務未完成

二、解決方案:
2.1調節參數hive.map.aggr = true 在map端部分聚合,相當於combiner
hive.groupby.skewindata = true ,數據傾斜的時候進行負載均衡,當選項設定爲true,生成的查詢計劃會有兩個MR JOB,map輸出的結果集合會隨機分不到reduce中,這樣的結果是相同的group 畢業 key可能會分發到不同的reduce中,從而達到負載均很的目的
set hive.exec.reducers.max=200;

set mapred.reduce.tasks= 200;—增大Reduce個數

set hive.groupby.mapaggr.checkinterval=100000 ;–這個是group的鍵對應的記錄條數超過這個值則會進行分拆,值根據具體數據量設置

set hive.groupby.skewindata=true; --如果是group by過程出現傾斜 應該設置爲true

set hive.skewjoin.key=100000; --這個是join的鍵對應的記錄條數超過這個值則會進行分拆,值根據具體數據量設置

set hive.optimize.skewjoin=true;–如果是join 過程出現傾斜 應該設置爲true
2.2sql調節

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章