Hive查詢表的優化總結

2021-09-09 08:54:04 字數 615 閱讀 5903

一、小表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....