什么可以导致Hive的where子句没有效果?

时间:2013-02-25 02:00:54

标签: hive

我有这个看似简单的问题。

SELECT
     table1.one 
FROM 
    (SELECT
       user, 
       1 AS one
    FROM 
       users
    WHERE date=${hiveconf:TODAY}
    DISTRIBUTE BY user.id
    SORT BY user.id
    ) table1
WHERE table1.one < 0;

令人惊讶的是,这将返回users表中的所有行:

Execution completed successfully
Mapred Local Task Succeeded . Convert the Join into MapJoin
OK
1
1
1

因为table1.one显然为1,因此table1.one&lt; 0是假的,我希望不会返回任何行。怎么会发生这种情况?

修改 当我添加table1.one&lt; 0到select子句,我得

Mapred Local Task Succeeded . Convert the Join into MapJoin
OK
1   false
1   false
1   false

第二次编辑:
删除WHERE date = $ {hiveconf:TODAY}(这是不必要的,因为那是一个分区属性)修复了这种奇怪的行为。不确定原因是什么。

0 个答案:

没有答案