1

以下のようなHiveステートメントがあります。

INSERT INTO TABLE myTable partioned (myDate) SELECT * from myOthertable

myOthertableには 100 万件のレコードが含まれており、上記の Insert の実行中に、すべての行が に挿入されるわけではありませんmyTable。これは句のSELECT *ないクエリであるWHEREため、理想的には からmyOthertableへのすべての行に対して挿入を行う必要がありますmyTable。挿入中に一部の行を無視します。

なぜこれが起こっているのか誰にも示唆できますか?

4

1 に答える 1

0

この問題は、テーブルが十分に大きい場合、最初のマップ タスクで作成されるファイルの数が多いために、上記のクエリが機能しないように思われることが原因である可能性があります。

その場合は、マップ プロセスでハイブ クエリのレコードをグループ化し、リデュース側で処理します。DISTRIBUTE BY を使用して、ハイブ クエリ自体に同じことを実装できます。以下はクエリです。

FROM myOthertable 
INSERT OVERWRITE TABLE myTable(myDate) 
SELECT other1, other2 DISTRIBUTE BY myDate;

このリンクが役立つ場合があります

于 2014-12-01T06:58:44.700 に答える