第十章 Hive調優 【group by 開啟map端聚合】


1. 對group by的調優 (開啟map端聚合)
說明 : 默認情況下 Map階段相同的key 會被發送到同一個reduce中去聚合
當某個key數據量過大時,就造成了數據傾斜

什么是map端聚合?
並不是所有聚合操作,都需要在reduce端聚合,可以在map端先將部分數據,進行聚合,最終數據在reduce聚合

參數設置
        -- 是否開啟map的聚合(默認為true)
        set hive.map.aggr=true;
        -- 在 Map 端進行聚合操作的條目數目
        set hive.groupby.mapaggr.checkinterval=100000;
        -- 發生數據傾斜時,進行負載均衡
        set hive.groupby.skewindata=true;
            說明 :
                當選項設定為 true,生成的查詢計划會有兩個 MR Job。
                第一個 MR Job 中,Map 的輸出結果(outKey) 會隨機分布到 Reduce 中,
                     每個 Reduce 做部分聚合操作,並輸出結果
             這樣處理好處是 相同的
Group By Key 有可能被分發到不同的 Reduce 中,從而達到負載均衡的目的 第二 個 MR Job 再根據預處理的數據結果
按照
Group By Key 分布到 Reduce 中(這個過程可以保證 相同的 Group By Key 被分布到同一個 Reduce 中),最后完成最終的聚合操作
 測試
INFO : Hadoop job information for Stage-1: number of mappers: 1; number of reducers: 1
開啟map端聚合 : 748 rows selected (31.345 seconds)
關閉map端聚合 : 748 rows selected (38.138 seconds)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM