Apache Hive join操作
2019-03-20 14:49
148 查看
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 Hadoop2.0之HDFS均衡操作分析
- linux系统apache rewirte模块操作实例及apache追加模块
- 云星数据---Apache Flink实战系列(精品版)】:Flink其他操作及内容003-flink的背压机制001
- mac osx系统下 apache-php-mysql 简单配置 & 远程登录lnmp服务器简单操作
- windows7安装phpnow Apache非管理员权限不能操作Windows NT服务的解决方法!
- Linux环境中Apache也就是httpd服务的启动,查看版本等操作
- Apache相关操作
- Apache中压力测试工具ab的操作说明
- Apache异常:在一个非套接字上尝试了一个操作
- 【FTP】org.apache.commons.net.ftp.FTPClient实现复杂的上传下载,操作目录,处理编码
- apache-commons-beanutils的基本使用操作
- Apache Maven的入门使用之常用操作以及核心概念介绍(2)
- 虚拟主机用户ftp和apache用户文件互操作权限解决方法
- [JAVA]Apache FTPClient操作“卡死”问题的分析和解决
- 【Android基础】-基于Apache HttpClient封装的网络操作工具类
- Red Hat 9.0安装Apache的操作步骤
- 最近重新在Hadoop集群上安装apache-hive操作记录
- 使用Apache的BeanUtils工具类操作JavaBean属性
- 使用org.apache.commons.io.FileUtils,IOUtils;工具类操作文件