2016-05-10 4 views
1

Beim Erstellen der Partitionstabelle in der Struktur ist es zwingend erforderlich, immer die letzte Spalte für die Partitionsspalte auszuwählen. Wenn ich 1. Spalte als Partition wähle, kann ich keine Daten filtern, gibt es eine Möglichkeit, die erste Spalte für die Partition zu wählen?Hive erste zu berücksichtigende Spalte in der Partitionstabelle

Antwort

0

Wenn Sie im Hive eine Tabelle partitionieren möchten, müssen Sie die Partitionsspalte während der Erstellung der Tabelle zuerst definieren. & während die Daten in Tabelle bevölkern Sie wie folgt angeben müssen:

"IN partitioned_table PARTITION INSERT (Status) SELECT id, name, Status von temp_tbl"

auf diese Weise Sie verwenden, können auf der letzten Spalte partitionieren basierend nur. wenn Sie auf der Basis der ersten Spalte partitionieren möchten. Sie müssen dafür einen Mapreduce-Job schreiben. das ist die einzige verfügbare Option.

0

Ich vermute, das Problem, das Sie konfrontiert sind, ist, dass Sie bereits Tabelle "Quelle" in Ihrem lokalen System oder hdfs haben und Sie es in partitionierte Tabelle hochladen möchten. Und Sie möchten, dass die erste Spalte in der Quelltabelle in der Struktur partitioniert wird. Da die Quelltabelle keine Header hat, können wir hier nichts machen, wenn wir versuchen, die Datei direkt in den Hive-Zielordner hochzuladen. Die einzige Alternative, die ich kenne, ist, dass Sie eine nicht partitionierte Tabelle in der Struktur erstellen, deren Struktur genau der Quelldatei entspricht. Laden Sie dann die Quelldaten zuerst in die nicht partitionierte Tabelle hoch und kopieren Sie dann die Daten von der nicht partitionierten Tabelle in die partitionierte Tabelle. create table source(eid int, ename int, esal int) partitioned by (dept string) Ihre nicht partitioniert Tabelle die Quelldatei wie diese ist Nehmen wir an, wo Sie die Daten hochladen wie ist diese create table nopart(dept string, esal int,ename string, eid int) dann verwenden Sie die dynamische Partition durch Befehl insert overwrite table source partition(dept) select eid,ename,esal,dept from nopart; die Reihenfolge der Parameter ist der einzige Punkt hier.

Verwandte Themen