一、小表join大表
1)小表在左邊(但是新版本已經沒區別)
2)開啟mapjoin
3)先過濾再join
二、大表join大表
1)空key過濾
2)空key處理
3)先過濾再join
三、group by
設定引數,使之執行兩個
mr job
。第乙個mr job中,map的輸出結果會隨機分布到reduce中,每個reduce做部分聚合操作,並輸出結果,這樣處理的結果是相同的
group by key
有可能被分發到不同的
reduce中,從而達到負載均衡的目的;第二個mr job再根據預處理的資料結果按照group by key分布到reduce中(這個過程可以保證相同的group by key被分布到同乙個reduce中),最後完成最終的聚合操作。
四、count(distinct) 去重統計
一般count distinct使用先group by再count的方式替換
五、行列過濾
列處理:在select中,只拿需要的列,如果有,盡量使用分割槽過濾,少用select *。
行處理:先過濾where條件,作為中間表,再進行join
hive查詢優化總結
hive查詢優化總結 儲存,學習,分享 join查詢操作的基本原則 應該將條目少的表 子查詢放在 join 操作符的左邊。原因是在 join 操作的 reduce 階段,位於 join 操作符左邊的表的內容會被載入進記憶體,將條目少的表放在左邊,可以有效減少發生記憶體溢位錯誤的機率。join查詢操作...
Hive查詢優化
害,最近組裡有個妹子不是很懂sql,一查就等好長時間,看的我十分揪心,算了,寫幾個常見的hive查詢優化叭。1.條目少的表或者子查詢放在join左邊,因為join左邊會讀入記憶體 select a.val b.val from a 條目少 join b on a.key b.key 2.join 操...
Hive查詢優化
1.先過濾,再查詢,因為每次生成中間表都會儲存到linux磁碟上 記住 不是hdfs 2.注意資料傾斜 傾斜的原因是reduce端資料的大量富集,可適度增加reduce 會著開啟 reduce自己判斷 某一比較大 自己再分開點.也就是合理設定 reduce數量 hive.exec.reducers....