2017-02-09 1 views
0

erstellen Statement:Ändern der Hive Tabellenpartitionen durch die Anzahl der Partitionen zu reduzieren

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'; 

Daten:

select * from tab1; 

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

Jetzt brauche ich tab1 Tabelle ändern nur 3 Partitionen haben (year string, month string, day string) ohne manuelles Kopieren/Ändern von Dateien. Ich habe Tausende von Dateien, also sollte ich ohne sie zu berühren Dateien nur Tabelle defination verändern?

Bitte lassen Sie mich wissen, wie dies zu tun?

Antwort

1

wenn dies etwas, das Sie einmal tun, würde ich vorschlagen, eine neue Tabelle mit den erwarteten Partitionen erstellen und die Tabelle aus der älteren Tabelle in die neuen mit dem dynamischen Partitionierung einsetzen. Dadurch wird vermieden, auch kleine Dateien in Ihren Partitionen halten. Die andere Option ist eine neue Tabelle zeigt auf den alten Standort mit den erwarteten Partitionen erstellen und verwenden Sie die folgenden Eigenschaften

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

danach können Sie die msck Reparatur Tabelle zu erkennen, die Partitionen laufen.

Verwandte Themen