別のハイブテーブルからパーティション化されたハイブテーブルに挿入したい。データは、ターゲット表の単一パーティションに入れられます。問題はすべてのレデューサーが非常に速く完了することですが、レデューサーの1人はすべての作業がその単一のレデューサーに行くので長い時間がかかります。ハイブに均等に行を分散させる方法パフォーマンスを向上させるために、レデューサー間で別のテーブルのパーティションテーブルに上書きする方法
私はすべてのレデューサーの間で均等に配分された作品を設定する方法を見つけたいと思います。そうする方法はありますか?インサートの上書きのパフォーマンスをどのように改善できますか?
ソース表DDL:
CREATE EXTERNAL TABLE employee (id INT,first_name String,latst_name String,email String,gender String) STORED AS TEXTFILE '/emp/data'
ターゲット表のDDL:
CREATE EXTERNAL TABLE employee_stage (id INT,first_name String,latst_name String,email String,gender String) PARTITIONED BY (batch_id bigint) STORED AS ORC LOCATION '/stage/emp/data'
ここでは、ソーステーブルのレコード以上100Mを含むデータのスナップショット
1 Helen Perrie [email protected] Female
2 Rafaelita Jancso rjancso[email protected] Female
3 Letti Kelley [email protected] Female
4 Adela Dmisek [email protected] Female
5 Lay Reyner [email protected] Male
6 Robby Felder [email protected] Male
7 Thayne Brunton [email protected] Male
8 Lorrie Roony [email protected] Male
9 Hodge Straun [email protected] Male
10 Gawain Tomblett [email protected] Male
11 Carey Facher [email protected] Male
12 Pamelina Elijahu [email protected] Female
13 Carmelle Dabs [email protected] Female
14 Moore Baldrick [email protected] Male
15 Sheff Morin [email protected] Male
16 Zed Eary [email protected] Male
17 Angus Pollastrone [email protected] Male
18 Moises Hubach [email protected] Male
19 Lilllie Beetham [email protected] Female
20 Mortimer De Hooge [email protected] Male
です。
ここでは私が使用しているhqlがあります。
insert overwrite table employee_stage
PARTITION (batch_id)
SELECT
id,
first_name,
latst_name,
email,
gender,
123456789 as batch_id
FROM employee;
データは1つのパーティションに格納されます。
パフォーマンスを改善するにはどうすればよいですか? すべてのレデューサーに均等に行を配布する方法はありますか?
追加情報を教えてください。あなたのテーブルはどのように分割されていますか?あなたのデータセットは何ですか? – Constantine
**(1)**オリジナルの投稿に追加情報を追加し、コメントを削除してください**(2)**両方のテーブルと目的地テーブルに入力するコードにDDLを指定してください –
@DuduMarkovitz I DDLとhqlを追加しました。見つけてください。 –