Apache Hive join操作
程序员文章站
2024-03-12 20:06:14
...
hive中对in 与 exists的查询比较弱,hive2中支持,但是性能比较差,hive1中不支持
注意:
hive中支持等值连接,但是不支持非等值连接
hive 支持多关联键的连接的,但是仅仅支持and的,不支持or的
。
hive支持多表join
hive join分类:
内连接,外连接和半连接
1.内连接 inner join|join
求两表交集
select * from default.sc sc inner join default.student stu on sc.stuid=stu.stuid
2. 外连接 (基本上与MySQL等一致)
left join
: 左连接以左表为主表,取左表所有记录,拿着左表关联键再取B表中的数据,左表中没有的则不取,左表有的但右表没有的则补充为null.
right join
: 右连接,以右表为主表,与left join相反
full outer join|full join
: 全连接,求两个表的并集,即包含两个表全部的数据
select * from default.sc sc left join default.student stu on sc.stuid=stu.stuid
select * from default.sc sc right join default.student stu on sc.stuid=stu.stuid
select * from default.sc sc full join default.student stu on sc.stuid=stu.stuid
3.半连接 left semi join 在内连接的基础上只取左表的数据,只能查询左侧表的数据
left semi join:优化in/exists,在hive中,绝大多数hql语句都会从转换为Mapreduce任务的,in/exists 语句在转换的时候,map端的key不好确定。
left semi join 可以指定关联键,进行转换的时候比较好确定mapkey。当然也可以使用inner join只查询左表
select * from default.sc sc left semi join default.student stu on sc.stuid=stu.stuid
相当于对inner join的结果取左表,即只有左表的字段,而没有右表的任何字段。
推荐阅读
-
Apache Hive join操作
-
Apache Hive常用函数举例
-
Apache Hive 数据导出
-
Apache Hive 1.2.0 release
-
java Apache poi 对word doc文件进行读写操作
-
java Apache poi 对word doc文件进行读写操作
-
数组转字符串org.apache.commons.lang3——StringUtils.join
-
Python sqlalchemy增删改查,多表查询join操作
-
Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
-
在MySQL中使用JOIN语句进行连接操作的详细教程