2017-02-07 6 views
0

既存のパーティションの小さなファイルを、パーティションの1つの大きなファイルにマージする方法。ハイブの既存のパーティションから小さなファイルをマージするにはどうすればよいですか?

たとえば、私はテーブルuser1を持っていて、カラムにはfname、lname、パーティションカラムはdayです。私は(日int型)によってparittioned表USER1(FNAME列、LNAME文字列)を作成するスクリプト

の下に使用してテーブルを作成した

partionテーブルにデータを挿入した後は、以下のようになります。

私は、すなわち日= 20170201分配カラムの助けを借りて、選択クエリを実行
fname lname day 
..................... 
AA  AAA 20170201  ....>partition 20170201 
BB  BBB 20170201 
................... 
CC  CCC 20170202 ......>partition 20170202 
DD  DDD 20170202 
.................... 
EE  EEE 20170203 .......>partition 20170203 
FF  FFF 20170203 
....................... 
GG  GGG 20170204 ........>partition 20170204   
HH  HHH 20170204 
....................... 

select * from user1 where day=20170201; 

私はすべての小さなファイルをマージしたい上記の表に基づいて

AA  AAA 20170201 
BB  BBB 20170201 

以下のようにそれが結果を得られますが、パーティションの日= 20170203でに日= 20170201と日​​= 20170202と日= 20170203、すなわち私のパーティションテーブル(すなわちUSer1).ieそれは以下のようになります。

fname lname day 
..................... 
AA  AAA 20170201 
BB  BBB 20170201 
CC  CCC 20170202  
DD  DDD 20170202 
E  EEE 20170203 .......>partition 20170203 
FF  FFF 20170203 
....................... 
GG  GGG 20170204 ........>partition 20170204   
HH  HHH 20170204 
....................... 

これはどうすればよいですか?

ありがとうございました。

答えて

0
  1. 新しいフィールド​​で仕切られた新しいテーブルを作成します(partition_day int型)によってparittioned表user_new(FNAME列、LNAME文字列、日int)をCREATE

    を。新しいテーブルへ

  2. のデータのロードは、(新しいのためにあなたの条件を定義case partitionsin)

    挿入上書きテーブルuser_newパーティション(partition_day) 選択fnameは、LNAME、日、 ケース際にその日< = 20170203 20170203 日> 20170203の場合は20170204 end as partition_day from user1;

+0

フォーマットは返信用 – leftjoin

+0

こんにちはおかげで動作しません。申し訳ありませんが、それは新しいテーブルのために動作しますが、私は同じ既存のテーブルを使用します。 "alter table user1 add columns(partition_day int);"の助けを借りて既存のテーブルに新しいカラムを追加します。 新しいカラムはNULL値で追加されます。今partition_dayには "NULL"という値が含まれています しかし、その後、私は同じテーブルを以下のように選択して上書きしようとしています。 "day_20170206の場合は20170206、次に20170206の場合は20170207、user1の場合は20170207の終了" –

+0

また、partition_dayにはNull値のみが含まれています。 これで、daydayの値をpartition_Dayに設定する方法を教えてください。 ありがとうございました。 –

関連する問題