2017-02-09 10 views
0

CREATE文:は、パーティションの数を減らすことにより、ハイブの表のパーティションを変更

CREATE EXTERNAL TABLE tab1(usr string) 
       PARTITIONED BY (year string, month string, day string, hour string, min string) 
       ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' 
       LOCATION '/tmp/hive1'; 

データ:

select * from tab1; 

jhon,2017,2,20,10,11 
jhon,2017,2,20,10,12 
jhon,2017,2,20,10,13 

は今、私は唯一の3つのパーティション(year string, month string, day string)を持っているtab1テーブルを変更する必要がありますファイルを手動でコピー/変更することはありません。私は何千ものファイルを持っているので、ファイルに触れることなくテーブル定義だけを変更する必要があります。

どうすればいいですか?

答えて

1

これはあなたが一度行うことなら、予想されるパーティションで新しいテーブルを作成し、古いテーブルのテーブルを新しいパーティションにダイナミックパーティショニングを使用して挿入することをお勧めします。これにより、小さなファイルをパーティションに保存することも避けられます。他のオプションは、期待パーティションで古い場所を指す新しいテーブルを作成し、次のプロパティにその後

TBLPROPERTIES ("hive.input.dir.recursive" = "TRUE", 
"hive.mapred.supports.subdirectories" = "TRUE", 
"hive.supports.subdirectories" = "TRUE", 
"mapred.input.dir.recursive" = "TRUE"); 

を使用し、パーティションを認識するためにMSCKの修復表を実行することができます。

関連する問題