Hive中的所有Join
内连接:inner join --join优化:在进行join的时候,大表放在最后面 --但是使用 / +streamtable(大表名称) / 来标记大表,那么大表放在什么位置都行了 select / +streamtable(s) / s.ymd,d.dividend from stocks s inner join dividends d on s.ymd=d.ymd and s.symbol=d.symbol where s.symbol=’aapl’ 外连接:left outer join,right outer join,full outer join 把外连接(outer join)中where语句中的过滤条件,放在on语句是无效的。不过对于内连接有效。 笛卡尔积:join join的时候不使用on,而使用where的。 --笛卡尔积join很缓慢,可以设置hive.mapred.mode=strict来阻止执行 hive.mapred.mode=strict 左半开连接:left semi-join(hive不支持右半开连接) 左半开连接(left semi-join)会返回左边表的记录,前提是其记录对于右边表满足on语句中的判定条件。 select和where语句中都不能引用右边表的字段。 适用场景: 因为hive不支持in...exists结构