2016-10-10 10 views
0

1つのファイル(test.hql)に200個のInsert文を入れて、ORC形式のハイブテーブルに挿入します。各挿入にはかなりの時間(40秒)がかかります。 2時間。物事をスピードアップする方法はありますか?HIVE insert文が長すぎます

私はtmp(テキスト形式)テーブルを作成した後、簡単な挿入上書きを行うことはできますが、これは許可されていません..新しいDDLを作成することはできません.. - > 1つのオプションは、並列プロセスで実行します。 Hive自体でこれらの挿入を高速化できる他の方法はありますか?

答えて

0

多くの挿入文は1つよりも遅いです。 UNION ALLを使用して200個のインサートを単一のものに変換してください。

INSERT INTO TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...)] 
select value1 as col1, value2 as col2... coln from default.dual union all 
select value1 as col1, value2 as col2... coln from default.dual union all 
... 
select value1 as col1, value2 as col2... coln from default.dual; 
+0

これもやってみました。 – ssp12

0

入力ファイルを作成して一度にテーブルに読み込むことができます。

(区切り文字)特定の行フォーマットでテーブルを作成

テキストファイルとして格納されたテーブル試験(文字列、B列)によって終了行フォーマットフィールドを「」作成。次いで

し、そこにデータをロードし、

LOAD DATAのINPATH "/パス" テーブルtable_nameに、

+0

はい、すでにそうしていますが、今DDLを作成できません。Kindofプロジェクトの要件 – ssp12

+0

それぞれのインサートは新しいmapreduceジョブを開始するため、時間がかかりすぎます。実行エンジンをスパークするように切り替えると、時間が短縮されます。それを試してください。 clouderaを使用している場合は、実行エンジンを変更できます。 –

関連する問題