毕业论文
您现在的位置:  >> 笛优势 >> 正文 >> 正文

轻松玩转hive中join六大神兽之

来源:笛 时间:2023/2/11
北京哪个专家治疗白癜风好 https://jbk.39.net/yiyuanfengcai/ys_bjzkbdfyy/

各种join之间的关系:

Hive编程是整个数据仓库操作的核心,而各个业务之间的join是Hive的核心,因此可以理解,掌握Hive中的各种join对于数据仓库开发工程师来说是必不可少的技能。

注意:

hive中的join仅支持等值join,也就是说,joinon中的on里边表之间的连接条件只能是=,不能是,等符号。此外,on中的等值连接之间只能是and,不能是or.(如果在on里添加非表之间的条件可以是非等号)1.innerjoin(内连接)

内连接,将保留仅两个连接的表中存在符合连接条件的数据,并返回两个表中都有的信息内部连接是最常见的连接类型,它是称为普通连接,而E.FCodd最初称为自然连接。inner可以省略。innerjoin==join等效于较早的连接语法通俗理解:返回两张表中都有的信息;

2.leftjoin(左外连接)

左外连接(LeftOuterJoin),其中outer也可以省略,leftouterjoin是一个早期措词。AlistjoinB是基于表A的记录为基础。A可以看作是左表,B可以看作是右表,而listjoin则基于左表。这意味着将全部显示左侧表(A)中的记录(无论右侧表中是否有与它们匹配的行),而右侧表(B)仅显示符合搜索条件的记录,例如符合on,where条件。表B中缺少记录的内容为NULL。AlistjoinB等效于BrightjoinA通俗理解:以前面的表作为主表和其他表进行关联,返回的记录数和主表的记录数相同,关联不上的字段用NULL;3.rightjoin(右外连接)

同理和leftjoin相反,ArightjoinB,则会显示表B中的所有记录,A表不足以填充null同样,rightouterjoin=righrjoin,outer也可以省略。通俗理解:以后面的表为主表,和前面的表做关联,返回的记录数和主表一致,关联不上的字段为NULL;4.fullouterjoin(全外连接)

等效于fulljoin,全外连接[也称为全关联]包含左表和右表的所有行,无论在另一侧的表中是否存在与它们匹配的行在功能上,它等效于两个数据集的左外连接和右外连接,然后再消除重复行的并行操作将以上两个结果集合并为一个结果集。不关联的字段为NULL;注意:Hive不会使用mapjoin来优化fulljoin;通俗理解:返回两个表记录的并集,关联不上的字段为NULL;5.lefthalfjoin(左半开连接)

左半开连接,将显示左半边表中记录,前提是对右半边表的记录满足on语句中的判断条件。leftsemijoin的效果类似于innerjoin的效果,并且比innerjoin更高效。通俗的理解:关键字前面的表是主表,两个表与on条件字段做交集,并返回前面表中的记录6.crossjoin(笛卡尔积关联)

返回两个表的笛卡尔积结果,无需指定关联键;这似乎与innerjoin相同,在SQL标准中定义的是crossjoin,crossjoin就是无条件的innerjoin。在mysql中,没有区别,这两者是等效的。{没有太大意义,通常使用逗号}通俗理解:返回两个表的笛卡尔积结果,不需要指定关联键;如果觉得对你有所帮助。记得收藏和

转载请注明:http://www.0431gb208.com/sjszjzl/3577.html

  • 上一篇文章:
  • 下一篇文章: 没有了