1

我有这个看似简单的查询。

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 < 0 是错误的,我希望不会返回任何行。怎么会这样?

编辑: 当我将 table1.one < 0 添加到 select 子句时,我得到

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

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

4

0 回答 0