2016-08-06 11 views
0

Ich versuche zu lernen, Hive und während der Verweis auf die Hadoop Definitive Guide, hatte ich einige Verwirrungen.Verständnis Partitionierung in Hive

Wie im Text beschrieben, wird die Partition in Hive durch Erstellen von Unterverzeichnissen mit denselben Werten der Partitionierungsspalte erstellt. Aber beim Hive-Datenladen bedeutet das einfach das Kopieren von Dateien, und während des Ladens werden keine Datenvalidierungsprüfungen durchgeführt, aber während des Abfragens überprüft Hive die Daten auf Partitionierung. Oder wie bestimmt es, welche Datei in welches Verzeichnis gehen soll?

Antwort

0

Oder wie bestimmt es, welche Datei in welches Verzeichnis gehen soll?

Es ist nicht erforderlich, Sie müssen den Wert der Zielpartition im LOAD DATA Befehl festlegen. Wenn Sie eine LOAD-Operation in einer partitionierten Tabelle ausführen, müssen Sie die spezifische Partition (das Verzeichnis) angeben, in der Sie die Daten mithilfe des Arguments PARTITION laden. Entsprechend der documentation:

Das Ziel, in das geladen werden soll, kann eine Tabelle oder eine Partition sein. Wenn die Tabelle partitioniert ist, muss eine bestimmte Partition der -Tabelle angegeben werden, indem Werte für alle Partitionierungsspalten angegeben werden.

Zum Beispiel in this example:

hive> LOAD DATA LOCAL INPATH './examples/files/kv2.txt' OVERWRITE INTO TABLE invites PARTITION (ds='2008-08-15'); 
    hive> LOAD DATA LOCAL INPATH './examples/files/kv3.txt' OVERWRITE INTO TABLE invites PARTITION (ds='2008-08-08'); 

Die beiden Dateien werden in den invites/ds=2008-08-15 und invites/ds=2008-08-08 Ordnern gespeichert werden.