2016-05-13 8 views
1

einen Datenrahmenspeicher in Parkett-Format und partitioniert physisch über verschiedene Dateien basierend auf den Werten von einem oder mehreren Spalten in einer Dateisystemstruktur wie die folgenden Eigenschaften:definieren Impala Tabellenschema für partitionierten Daten

|-region=Europe 
| |-processed=1 
| | |-part-r-00000-0515bd21-1cf1-40f1-885e-055a29284961.gz.parquet 
| |-processed=2 
| | |-part-r-00000-0515bd21-1cf1-40f1-885e-055a29284961.gz.parquet 
| |-processed=3 
| | |-part-r-00000-0515bd21-1cf1-40f1-885e-055a29284961.gz.parquet 
| |-processed=4 
|  |-part-r-00000-0515bd21-1cf1-40f1-885e-055a29284961.gz.parquet 
|-region=Asia 
| |-processed=2 
| | |-part-r-00000-0515bd21-1cf1-40f1-885e-055a29284961.gz.parquet 
| |-processed=4 
|  |-part-r-00000-0515bd21-1cf1-40f1-885e-055a29284961.gz.parquet 
|-region=America 
| |-processed=3 
|  |-part-r-00000-0515bd21-1cf1-40f1-885e-055a29284961.gz.parquet 
|-_SUCCESS 

zu machen das Schema kennt die Partitionen ich jede Partition manuell hinzufügen bin:

ALTER TABLE status_log ADD PARTITION (region='Europe', processed="1") LOCATION '/hdfs/status_logs/region=Europe/processed=1'; 
ALTER TABLE status_log ADD PARTITION (region='Europe', processed="2") LOCATION '/hdfs/status_logs/region=Europe/processed=2'; 
ALTER TABLE status_log ADD PARTITION (region='Europe', processed="4") LOCATION '/hdfs/status_logs/region=Europe/processed=2'; 
... 
.. 
. 

gibt es Möglichkeit, das Tabellenschema, so dass Impala es wird lesen sie die Baumverzeichnisstruktur und automatisch schließen, das partitionierten Schema zu definieren? Oder muss man immer jede Partition automatisch zur Tabelle hinzufügen?

Antwort

1

Sie könnten hive, da Impalas Aktien die gleiche Metastore verwenden dies kein Problem sein sollte. Ich nehme an, dass in der Definition der talbe status_logs die LOCATION als '/ hdfs/status_logs' gesetzt ist.

in hive Ausgabe Befehl

msck repair table status_logs 

dies alle Partitionen auf dem Metastore automatisch hinzuzufügen. und dann in Impalas zurück, alles was Sie tun müssen, ist

invalidate metadata status_logs 

Sie alle Partitionen sehen konnte. zu überprüfen, dass Sie tun könnten (das wissen Sie wahrscheinlich schon).

show partitions status_logs