1

1 つのファイル (test.hql) に 200 個の Insert ステートメントがあり、それらを ORC 形式のハイブ テーブルに挿入します。各挿入にはかなりの時間がかかり (40 秒)、完全なプロセスに 2 時間近くかかります。物事をスピードアップする方法はありますか?

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

4

2 に答える 2

0

入力ファイルを作成して一度にテーブルにロードできる方がよいでしょう。

特定の行形式 (区切り記号付き) でテーブルを作成する

',' で終了するテーブル テスト (a 文字列、b 文字列) の行形式フィールドを作成し、テキスト ファイルとして保存します。

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

LOAD DATA inpath "/path" をテーブル table_name にロードします。

于 2016-10-10T13:19:25.607 に答える
0

多くの挿入ステートメントは、単一のステートメントよりも遅くなります。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;
于 2016-10-10T09:19:52.613 に答える