Hive 1.1.0 Alter table-partition-Typ von int zu string
Ich habe eine Tabelle ist, die eine partition vom Typ int, aber die möchte ich umwandeln in string. Allerdings kann ich nicht herausfinden, wie dies zu tun.
Dem Tisch Beschreibung:
Col1 timestamp
Col2 string
Col3 string
Col4 string
Part_col int
# Partition information
# col_name data_type comment
Part_col int
Die Partitionen die ich erstellt habe, sind Part_col=0, Part_col=1, ..., Part_col=23
Will ich ändern Sie Sie, um Part_col='0' etc
Ich diesen Befehl ausführen im hive:
set hive.exec.dynamic.partitions = true;
Alter table tbl_name partition (Part_col=0) Part_col Part_col string;
Habe ich auch versucht, mit Hilfe von "partition (Part_col)", um alle Partitionen auf einmal.
Bekomme ich die Fehlermeldung "Invalid column reference Part_col"
Ich bin mit dem Beispiel von https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Arten für die Umwandlung von dezimal-Spalten, kann aber nicht herausfinden können, was dec_column_name darstellt.
Dank
InformationsquelleAutor Chris Njuguna | 2015-07-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ein bisschen Graben ergab, dass es war ein Bienenstock JIRA zu haben, einen Befehl genau für die Aktualisierung partition Datentyp der Spalte (https://issues.apache.org/jira/browse/HIVE-3672)
Laut JIRA der Befehl wurde umgesetzt, aber es ist offensichtlich, dass es wurde nie dokumentiert, auf Hive-Wiki.
Habe ich es auf meinem Hive 0.14 system und es funktioniert wie erwartet.
InformationsquelleAutor sokhaty
Ich denke, yo sollten neu definieren, die Tabelle schema und neu zu definieren, dass Ihre partition Wert ist nicht gonna be eine ganze Zahl mehr und das ist jetzt wohl ein string-Typ.
Was ich empfehlen Sie tun, ist:
Die oben genannten Schritte, physisch (Ordner-Struktur) ist nicht gonna einen Unterschied machen mit der Struktur, die Sie bereits hatte. Der Unterschied ist gonna be in den Hive-metastore, speziell in der "virtuellen Spalte" erstellt, wenn Sie eine Partition.
Auch, anstatt nun Abfragen wie: part_col = 1, jetzt sind Sie gonna Lage sein, um Anfragen wie: part_col = '1'.
Versuchen Sie dies und sagen Sie mir, wie das geht.
über diese denken, Sie sagte zu dem metastore, dass Ihre Tabelle war partitioniert, die durch eine bestimmte Spalte und die Spalte ist ein int. Nun, die Sie bereits definiert haben Ihr schema für die Tabelle, die Sie hinzufügen oder löschen Sie alle Partitionen, die Sie wollen, aber Sie sind gonna be "strings" - Typen. Ich denke, der beste Weg das zu tun, was Sie wollen, ist zu tun, was ich dir gesagt habe, nachdem Sie definiert haben, in das neue schema für die Tabelle, können Sie den Befehl msck-Reparatur-Tabelle (cwiki.apache.org/confluence/display/Hive/...
Danke @dbustosp ich Ihre Lösung, und es war eine perfekte schnelle Lösung für meine situation. Aber nach dem Artikel in der URL, die ich gepostet es ist möglich, alter partition-Daten-Typen mit einem einzigen Befehl. Ich denke, Sie würden Zustimmen, es ist möglicherweise der beste Weg, dies zu tun. Denken Sie daran die partition Spalte ist ganz unabhängig von den Daten, damit ich der Lage sein sollten, dies zu tun, ohne zu löschen und Neuerstellen der Tabelle und der Partitionen. Bitte überprüfen Sie den link, den ich gepostet in der ursprünglichen Frage. Warum nicht die "alter table partition" - Befehl nicht funktioniert? Mache ich es falsch?
InformationsquelleAutor dbustosp