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能尽快修复这个缺陷。 
 



posted @ 2015-09-08 11:30  iAthena  阅读(2248)  评论(0编辑  收藏  举报