Ich versuche, einen columnName in der Struktur umzubenennen. Gibt es eine Möglichkeit, den Spaltennamen in Hive umzubenennen?.
tableA (column1, _c1, _c2) bis tableA (column1, column2, column3) ??
Spaltenname/Typ/Position/Kommentar ändern :
ALTER TABLE table_name CHANGE [COLUMN] col_old_name col_new_name column_type [COMMENT col_comment] [FIRST|AFTER column_name]
Beispiel:
CREATE TABLE test_change (a int, b int, c int);
// will change column a's name to a1
ALTER TABLE test_change CHANGE a a1 INT;
Der Befehl funktioniert nur, wenn der Befehl "use" zum ersten Mal verwendet wurde, um die Datenbank zu definieren, in der gearbeitet wird. Die Syntax zum Umbenennen von Tabellenspalten mit DATABASE.TABLE löst einen Fehler aus und funktioniert nicht. Version: Hive 0.12.
BEISPIEL:
Hive> ALTER TABLE databasename.tablename CHANGE old_column_name new_column_name;
MismatchedTokenException(49!=90)
at org.antlr.runtime.BaseRecognizer.recoverFromMismatchedToken(BaseRecognizer.Java:617)
at org.antlr.runtime.BaseRecognizer.match(BaseRecognizer.Java:115)
at org.Apache.hadoop.Hive.ql.parse.HiveParser.alterStatementSuffixExchangePartition(HiveParser.Java:11492)
...
Hive> use databasename;
Hive> ALTER TABLE tablename CHANGE old_column_name new_column_name;
OK
alter table table_name change old_col_name new_col_name new_col_type;
Hier ist das Beispiel
Hive> alter table test change userVisit userVisit2 STRING;
OK
Time taken: 0.26 seconds
Hive> describe test;
OK
uservisit2 string
category string
uuid string
Time taken: 0.213 seconds, Fetched: 3 row(s)