hive 的 left semi join 讲解
生活随笔
收集整理的這篇文章主要介紹了
hive 的 left semi join 讲解
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
介紹
?
LEFT SEMI JOIN (左半連接)是 IN/EXISTS 子查詢的一種更高效的實現(xiàn)。
?
示例
可以改寫為
?
特點
?
1、left semi join 的限制是, JOIN 子句中右邊的表只能在 ON 子句中設(shè)置過濾條件,在 WHERE 子句、SELECT 子句或其他地方過濾都不行。
2、left semi join 是只傳遞表的 join key 給 map 階段,因此left semi join 中最后 select 的結(jié)果只許出現(xiàn)左表。
3、因為 left semi join 是 in(keySet) 的關(guān)系,遇到右表重復(fù)記錄,左表會跳過,而 join 則會一直遍歷。這就導(dǎo)致右表有重復(fù)值得情況下 left semi join 只產(chǎn)生一條,join 會產(chǎn)生多條,也會導(dǎo)致 left semi join 的性能更高。?
比如以下A表和B表進(jìn)行 join 或 left semi join,然后 select 出所有字段,結(jié)果區(qū)別如下:
注意:藍(lán)色叉的那一列實際是不存在left semi join中的,因為最后 select 的結(jié)果只許出現(xiàn)左表。
總結(jié)
以上是生活随笔為你收集整理的hive 的 left semi join 讲解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 病毒查杀实现
- 下一篇: Android自定义Behavior