Hive-laden in partitionierten Tabelle
Habe ich eine log-Datei in HDFS Werte sind durch Komma getrennt. Zum Beispiel:
2012-10-11 12:00,opened_browser,userid111,deviceid222
Nun will ich diese Datei laden, um Hive-Tabelle, die Spalten "timestamp","action" und partitioniert, die durch "userid","deviceid". Wie kann ich Fragen, Bienenstock zu nehmen, die letzten 2 Spalten in der log-Datei als partition für die Tabelle? Alle Beispiele e.g. "hive> LOAD DATA INPATH '/user/myname/kv2.txt' OVERWRITE INTO TABLE invites PARTITION (ds='2008-08-15');"
erfordern die definition von Partitionen in das Skript, aber ich möchte Partitionen einrichten, die automatisch von HDFS-Datei.
Die eine Lösung ist die Erstellung einer intermediate-nicht-partitionierten Tabelle mit 4 Spalten, füllen Sie es aus Datei-und dann machen Sie ein INSERT into first_table PARTITION (userid,deviceid) select from intermediate_table timestamp,action,userid,deviceid;
aber das ist und zusätzliche Aufgabe-wir haben 2 sehr ähnliche Tabellen.. Oder sollten wir Sie "create external table" als Zwischenprodukt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ning Zhang hat eine tolle Antwort auf das Thema zu http://grokbase.com/t/hive/user/114frbfg0y/can-i-use-hive-dynamic-partition-while-loading-data-into-tables.
Quick Zusammenhang ist, dass:
Arbeitete ich diese sehr gleiche Szenario, sondern, was wir getan haben, erstellen Sie separate HDFS-Daten-Dateien für jede partition, die Sie brauchen, um zu laden.
Da unsere Daten kommen aus einer MapReduce-job, verwendeten wir MultipleOutputs in unserem Reducer-Klasse multiplex-Daten in Ihre entsprechenden partition Datei. Danach ist es nur eine Frage der Gebäude das Skript mit der Partition von der HDFS-Datei name.
Wie bereits erwähnt in @Denny Lee ' s Antwort, wir müssen mit einer staging-Tabelle(invites_stg)
verwaltete oder externe und dann EINFÜGEN von der staging-Tabelle partitionierte Tabelle(lädt in diesem Fall).
Sicherstellen, dass wir diese beiden Eigenschaften legen:
Und schließlich legen Sie auf lädt,
Finden Sie unter diesem link helfen: http://www.edupristine.com/blog/hive-partitions-example
5. Weisen hive dynamisch laden Partitionen
Wie etwa
LOAD DATA INPATH '/path/to/HDFS/dir/file.csv' OVERWRITE INTO TABLE DB.EXAMPLE_TABLE PARTITION (PARTITION_COL_NAME='PARTITION_VALUE');