既存のパーティションの小さなファイルを、パーティションの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
.......................
これはどうすればよいですか?
ありがとうございました。
フォーマットは返信用 – leftjoin
こんにちはおかげで動作しません。申し訳ありませんが、それは新しいテーブルのために動作しますが、私は同じ既存のテーブルを使用します。 "alter table user1 add columns(partition_day int);"の助けを借りて既存のテーブルに新しいカラムを追加します。 新しいカラムはNULL値で追加されます。今partition_dayには "NULL"という値が含まれています しかし、その後、私は同じテーブルを以下のように選択して上書きしようとしています。 "day_20170206の場合は20170206、次に20170206の場合は20170207、user1の場合は20170207の終了" –
また、partition_dayにはNull値のみが含まれています。 これで、daydayの値をpartition_Dayに設定する方法を教えてください。 ありがとうございました。 –