一 为什么要用左外表或者右外表
hive中对多个表联合操作时,总是按照从左到右顺序执行,.因为hive在对每行记录进行 操作时,它会尝试将较小的表缓存起来,然后扫描最大的那张表.因此需要保证在连续查询中的表的大小从左往右依次增加,否则当数据的量很大时,会大大降低hive的执行的性能.
幸运的是用户并非总是将最大的表放置在查询语句的最后面,只需用左外表或者右外表加以说明即可,
二 作用:
左外表或者右外表:功能很简单:当hive联合查询多个表时,告诉其那边 的是最大表.
如左外表:即是左边的为最大表 而右外表则是右边的表的为最大表
三 使用格式:
他们与join .......on 一起使用
右外表 right outer join :
hive> SELECT s . ymd, s . symbol, s .price_close, d. dividend
> FROM dividends d RIGHT OUTER JOIN stocks s ON d.ymd = s.ymd AND d. symbol= s . symbol;
左外表 left outer join :
SELECT s . ymd, s , symbolr s .price_close
> FROM stocks s LEFT SEMI JOIN dividends d ON s.ymd = d.ymd AND s.symbol= d.symbol;