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