hive 之 join 大法

2018-12-24  本文已影响0人  大王叫我来巡老和山

  hive 当中可以通过 join 和 union 两种方式合并表,其中 join 偏向于横向拼接(增加列的数量),union 则主要负责纵向拼接(增加行的数量)。本文先讲解一下 join。


  hive 中 join 主要分为六种,join、left (outer) join、right (outer) join、full (outer) join、cross join 和 left semi join。
  切记,使用 join 时不能忘记关键字 on。如果结尾未写 on,则都相当于进行 cross join,笛卡儿积关联(左表一万条数据,右表一万条数据,笛卡儿积之后就是一亿条数据,可怕吧~)。
  附注一句,join 中将大表写在靠右的位置,hive 处理速度也会快一些~

讲解

hive 中不支持 where 语句的子查询。如下sql 语句在 hive 中是要凉凉的:

SELECT a.key, a.value FROM a 
WHERE a.key in (SELECT b.key FROM B);

改写其实也很简单:

SELECT a.key, a.value
FROM a LEFT OUTER JOIN b ON (a.key = b.key)
WHERE b.key <> NULL;

那么更加高效的 semi 写法是怎样的呢?

SELECT a.key, a.val
FROM a LEFT SEMI JOIN b ON (a.key = b.key);

ok,今天就先讲到这里,谢谢各位看官阅读~

上一篇 下一篇

猜你喜欢

热点阅读