以下は、実行エンジンをtezとしてHiveで実行しようとしているクエリです。
SELECT A.CITY, A.NAME, B.PRICE
,(ROW_NUMBER() OVER (PARTITION BY A.NAME ORDER BY B.PRICE) ) AS RNUM
FROM TABLE1 A
LEFT JOIN TABLE2 B
ON A.NAME = B.NAME
WHERE ( A.COLUMN2 >= B.COLUMN3 AND A.COLUMN2 < B.COLUMN4)
GROUP BY A.CITY, A.NAME, B.PRICE;
- Hive のデータに対して上記のクエリを実行すると、結果が得られずに何時間も実行され続けますが、構文的には上記のクエリは正しいです。
- TABLEA と TABLEB の両方に数百万のレコードがあります。
データ形式を変えたり、コンテナサイズを大きくしたり、レデューサーの数を変えたり、ヒープサイズを変えたりしてみました。どのパラメータを変更しても、クエリが動かなくなります。
さらに調査したところ、where 条件とウィンドウ関数が原因でクエリが無限に実行されていることがわかりました。
これが私の質問です:
- 膨大なデータに対してエンド ツー エンドでクエリを実行する変更は何ですか?
ご協力いただきありがとうございます