hive中所有的join連線

2021-09-24 20:41:11 字數 1318 閱讀 4892

內連線:inner join

–join優化:在進行join的時候,大表放在最後面

–但是使用/+streamtable(大表名稱)/來標記大表,那麼大表放在什麼位置都行了

select /+streamtable(s)/ s.ymd,d.dividend

from stocks s inner join dividends d on s.ymd=d.ymd and s.symbol=d.symbol

where s.symbol=』aapl』

外連線:left outer join,right outer join,full outer join

把外連線(outer join)中where語句中的過濾條件,放在on語句是無效的。不過對於內連線有效。

左半開連線:left semi-join(hive不支援右半開連線)

左半開連線(left semi-join)只會返回左邊表的記錄,前提是其記錄對於右邊表滿足on語句中的判定條件,相當於sql中的in和exists

select和where語句中都不能引用右邊表的字段。

注意點:

semi-join比inner join更高效

hive不支援右半開連線

map端join:map-side join (使用桶的情況下)

map-side join:hive可以在map端執行連線過程(對於在join時有乙個是小表的情況)

使用map-side join,需要配置下:

(1)hive0.7版本之前,需要加/*+ mapjoin(表名) *

/select /*+ mapjoin(d) */ s.ymd,d.dividend from stocks s join dividends d

on s.ymd=d.ymd and s.symbol=d.symbol

where s.symbol=』aapl

(2)hive0.7版本開始,設定hive.auto.convert.join=true

hive.auto.convert.join=true

hive.mapjoin.smalltable.filsize=25000000 --使用這個優化的小表的大小(單位:位元組)

–注意:右外連線和全外連線不支援這個優化

備註:

(1). hive的join語句,只支援等值連線。

(2).注:pig提供的交叉生成功能支援「非等值連線」.

(3).hive目前不支援在join的on子句中使用or。

C 中所有的符號

算術運算子 加 x y z 減 x y z 乘 x y z 除 x y z 賦值運算子 賦值 x 10 賦值與和 x 10 等於x x 10 賦值與減 x 10 賦值與乘 x 10 賦值與除 x 10 賦值位與 x 0x02 賦值位或 x 0x02 邏輯操作符 邏輯與 if x 0xff 邏輯或 i...

檢視域中所有的使用者

前言 我們在新增域使用者時,有時會有使用者沒有新增,或者已新增的使用者名稱拼寫錯誤。這時,我們想查一下目前域中所有的使用者,使用如下命令。net user domain 其他一些命令 查詢域管理員使用者 net group domain admins domain 查詢域使用者 net user d...

Mysql查詢所有的表名和查詢表中所有的欄位名

最近的乙個專案中用到兩個東西,乙個就是傳入資料庫連線就自動複製該庫的所有表結構,其二就是在搜尋中用到獲取庫中的表和表中的字段,所以記錄一下,至於專案情況,隨後更新。獲取所有資料庫名稱 獲取庫中的所有表名稱 select column name from information schema.colu...