hive 連線查詢優化

2021-10-01 10:45:09 字數 858 閱讀 1996

1.每個join都會啟動乙個mapreduce

如果連線欄位是同乙個字段,則會進入同乙個reduce

2.hive會預設最後乙個表為資料量最大的表,所以會將前面的表進行快取

所以進行連線查詢的時候,將表從小到大連線

3.如果查詢中不想將大表放到最後,可以使用查詢暗示,指定哪張表示最大的

select /* +streamtable(c) */ c.id,c.name

from custorm c join order o on o.cid=c.id

內連線

直接join,只有複核連線條件的才會被查詢出

左外連線

left outer join,左邊的記錄會全部顯示

右外連線

right outer join 右邊的記錄會全部顯示

全外連線

full outer join 笛卡爾積

左半連線

只要右表有符合條件的資料,就會返回左邊的資料,不會全表掃瞄

left semi join (左半連線)是 in/exists 子查詢的一種更高效的實現。

查詢結果不能出現右表字段

select * from a where a.id in (select id from b ) 可以改為 select * from a left semi join b on a.id = b.in

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....

hive查詢優化總結

hive查詢優化總結 儲存,學習,分享 join查詢操作的基本原則 應該將條目少的表 子查詢放在 join 操作符的左邊。原因是在 join 操作的 reduce 階段,位於 join 操作符左邊的表的內容會被載入進記憶體,將條目少的表放在左邊,可以有效減少發生記憶體溢位錯誤的機率。join查詢操作...