2016-09-01 3 views
1

mit mir kann in der Lage Daten in hive mit folgendem Befehl laden:Läden von Daten Laden von Daten in Hive/Impala

LOAD DATA INPATH '/xx/person/a.csv' INTO TABLE person PARTITION (age = 30); 

in obiger Aussage, age=30 sind Partition, wo die Daten gespeichert werden muss.

Was ist, wenn a.csv tatsächlich die Altersspalte innen haben? Gibt es eine Möglichkeit, den Hive dazu zu bringen, jede Zeile von a.csv mit einer LOAD DATA-Anweisung korrekt in meine Personentabelle unter der rechten Partition einzufügen?

Antwort

1

LOAD DATA unterstützen nur statische Partitionierung: "Wenn die Anweisung LOAD DATA in einer partitionierten Tabelle ausgeführt wird, wird sie immer auf einer Partition ausgeführt." Auf der anderen Seite unterstützt die dynamische Partitionierung: "Wenn eine Partitionsschlüsselspalte erwähnt wird, aber keinen Wert zugewiesen [...] wird, werden die nicht zugewiesenen Spalten mit den letzten Spalten der SELECT-Liste ausgefüllt."

Sie können also eine Tabelle über die Quelldaten definieren, optional auch eine Ansicht definieren, um die Partitionsspalten an die endgültigen Positionen zu verschieben, und schließlich insert into [...] select [...] verwenden, um die partitionierte Tabelle aus der Ansicht aufzufüllen.