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