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 は 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} を削除すると (とにかくパーティション属性だったので不要でした)、この奇妙な動作が修正されました。何が原因だったのかわからない。

4

0 に答える 0