我有这个看似简单的查询。
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} (这是不必要的,因为那是一个分区属性)修复了这种奇怪的行为。不知道是什么原因。