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)    收藏  举报

导航