この一見単純なクエリがあります。
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 は false であるため、行が返されないと予想されます。どうしてそれが起こり得ますか?
編集: table1.one < 0 を select 句に追加すると、
Mapred Local Task Succeeded . Convert the Join into MapJoin
OK
1 false
1 false
1 false
2 番目の編集:
WHERE date=${hiveconf:TODAY} を削除すると (とにかくパーティション属性だったので不要でした)、この奇妙な動作が修正されました。何が原因だったのかわからない。