hive join on和where条件之间的区别
hive> select ljn001.*,ljn002.*
> from ljn001
left outer join ljn002
> on (ljn001.a
= ljn002.a and ljn001.b = ljn002.b and ljn001.b = 2);
OK
a b a
b
1 2 1
2
从执行计划中可以看出Hive在扫描ljn001表的map操作时就已经对b =
2进行了过滤。可见Hive把ljn001.b =
2当成了一个where筛选条件而不是一个on关联条件。因此在做Hive开发时一定要注意这个问题,否则就会产生意想不到的数据错误,也希望Hive能尽快修复这个缺陷。
OK
a
1