HIVE調優之GROUP BY


  • 默認情況下,Map階段結束后,相同Key的數據分發到一個reduce,當同一key數據量過大時就產生數據傾斜了。並不是所有的聚合操作都必要在Reduce端完成,很多聚合操作都可以先在Map端進行部分聚合,最后在Reduce端得出最終結果

  • 開啟Map端聚合參數設置

    • 是否在Map端進行聚合,默認為True: hive.map.aggr = true

    • 在Map端進行聚合操作的條目數目: hive.groupby.mapaggr.checkinterval = 100000

    • 有數據傾斜的時候進行負載均衡(默認是false): hive.groupby.skewindata = true

      • 當選項設定為 true,生成的查詢計划會有兩個MR Job。第一個MR Job中,Map的輸出結果會隨機分布到Reduce中,每個Reduce做部分聚合操作,並輸出結果,這樣處理的結果是相同Key的數據有可能被分發到不同的Reduce中,從而達到負載均衡的目的;第二個MR Job再根據預處理的數據結果按照Key分布到Reduce中(這個過程可以保證相同Key的數據分布到同一個Reduce中),最后完成最終的聚合操作


免責聲明!

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



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