最近開始搞商業智能(BI)項目的一些東東,在項目中用到了hive的一些知識,學習后發現hive的join方式還挺多,不像是musql 中那幾種 (INNER JOIN,LEFT JOIN,RIGHT JOIN),hive 的 join可是分起碼七種的,分表包含:
- INNER JOIN
- CROSS JOIN
- LEFT OUTER JOIN 等價於 LEFT JOIN
- RIGHT OUTER JOIN 等價於 RIGHT JOIN
- FULL OUTER JOIN
- LEFT SEMI JOIN
- LEFT ANTI JOIN
這里我就不介紹 INNER JOIN,LEFT OUTER JOIN ,RIGHT OUTER JOIN,FULL OUTER JOIN 這4種了,畢竟這也是大家RDBMS 的老盆友了,此處我就不多廢話了,開始介紹。
1.CROSS JOIN :
這個大哥可是一位狠人,返回兩個表的笛卡爾積結果,使用時不需要指定關聯鍵,給大家個樣例代碼:
SELECT ve.xxx, cu.yyy FROM aaa cu cross JOIN bbb ve ,記住這里不需要指定關鍵值,在實際應用中CROSS JOIN 因為產生的是笛卡爾積,所以大家在使用時慎用。
2.LEFT SEMI JOIN:
這個之前沒玩過hive的人估計都很懵,這是個啥玩意呢? 我來說說這個 LEFT SEMI JOIN 其實是和inner join 用法是一樣的,只不過它只能返回左表的數據,而不能返回右表的數據,這里需要注意 LEFT SEMI JOIN 這個連接只能返回左表內的數據,這里加一張
示意圖:
這個圖跟inner的很像吧,但是這個連接只能返回左表的數據項
3.LEFT ANTI JOIN :
這個跟LEFT SEMI JOIN 恰好相反,它查找的是沒有匹配到右表的左表數據,這里附一張示意圖:

以上就是最近的學習總結,先到這吧!
