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
     
             b
     
             2
从执行计划中可以看出Hive在扫描ljn001表的map操作时就已经对b = 2进行了过滤。可见Hiveljn001.b = 2当成了一个where筛选条件而不是一个on关联条件。因此在做Hive开发时一定要注意这个问题,否则就会产生意想不到的数据错误,也希望Hive能尽快修复这个缺陷。 
 



原文地址:https://www.cnblogs.com/iathena/p/4791098.html