hive 的多種join 方式淺析


最近開始搞商業智能(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 恰好相反,它查找的是沒有匹配到右表的左表數據,這里附一張示意圖:

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM