join
1. 内连接join(默认内连接)
内连接不支持的查询: on a.ymd<=b.ymd
内连接不支持的查询: on 中使用or
select a.ymd,a.price_close,b.price_close from stocks a join stocks b on a.ymd=b.ymd where a.symbol="AAPL" and b.symbol="IBM"
2.多表连接
hive 会对每个join连接对象启动一个mapreduce任务。
首先启动一个Mapreduce job对表a和表b进行连接操作,再启动一个Mapreduce job将第一个Mapreduce job的输出与表c进行连接操作
select a.ymd,a.price_close,b.price_close,c.price_close from stocks a join stocks b on a.ymd=b.ymd join stocks c on a.ymd=c.ymd where a.symbol="AAPL" and b.symbol="IBM" and c.symbol="GE"
3.左半连接 left semi join
返回左边表的记录,前提是其记录对于右边表满足on语句的判定条件
对于左表中一条指定的记录,在右表中一旦找到匹配的记录,hive就会立即停止扫描
select s.myd,s,symbol,s.price_close from stocks s left semi join dividens d on s.ymd=d.ymd and s.symbol=d.symbol
posted on 2019-06-30 11:58 happygril3 阅读(157) 评论(0) 收藏 举报