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
能尽快修复这个缺陷。
转载于:https://www.cnblogs.com/iathena/p/4791098.html