1

ハイブのパーティション分割されたテーブルにデータを挿入しようとすると、エラーが表示されます。詳細は次のとおりです。

テーブル:

CREATE TABLE partitionedemp(emp_no int, birth_date string, first_name string, last_name string) Partitioned By(gender string, hire_date string) stored as sequencefile;

データは次のようになります。 ここに画像の説明を入力

挿入スクリプト:

insert into table partitionedemp partition(gender, hire_date) select emp_no, birth_date, first_name, last_name, gender, hire_date from emp;

これが私が受け取ったエラーです:

失敗: SemanticException [エラー 10096]: 動的パーティションの厳密モードには、少なくとも 1 つの静的パーティション列が必要です。これをオフにするには、 hive.exec.dynamic.partition.mode=nonstrict を設定します

最初に次の 2 行を実行して、いくつかのオンラインの提案に従いました。

SET hive.exec.dynamic.partition = true;
SET hive.exec.dynamic.partition.mode = nonstrict;

そして、これが私が受け取った新しいエラーメッセージです: ここに画像の説明を入力

最後に次のように述べています。

FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
MapReduce Jobs Launched: 
Stage-Stage-1: Map: 1   Cumulative CPU: 14.39 sec   HDFS Read: 0 HDFS Write: 0 FAIL
Total MapReduce CPU Time Spent: 14 seconds 390 msec

更新: @leftjoin による以下の提案に従いました。ここに新しい更新がありますが、まだ機能していません。欠落または間違ったスクリプトはありますか?

ここに画像の説明を入力

4

1 に答える 1

1

例外メッセージの提案に従って、これらの値を増やしてください。

例えば

set hive.exec.max.dynamic.partitions=100000;  
set hive.exec.max.dynamic.partitions.pernode=10000;

可能であれば、パーティションの数を減らすことをお勧めします。性別を削除すると、パーティションの数が減ります。小さなファイルが多すぎるのは、hadoop には適していません

于 2016-07-01T20:23:03.690 に答える