目前的架构是:
hive> describe tableA;
OK
id int
ts timestamp
我想在不删除表的情况下将ts
列更改为BIGINT
并重新创建。有可能吗?
答案 0 :(得分:50)
找到解决方案:
ALTER TABLE tableA CHANGE ts ts BIGINT AFTER id;
有关详细信息,请参阅此处:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-AlterColumn
答案 1 :(得分:22)
ALTER TABLE table_name CHANGE col_name col_name newType
答案 2 :(得分:9)
通常更改/修改exesting表在Hive中使用此语法很简单。
ALTER TABLE table_name CHANGE old_col_name new_col_name new_data_type
您可以在此处一次更改列名和数据类型。如果您不想更改col_name,只需使old_col_name和new_col_name相同即可。好。
来解决你的问题。如果要将ts列更改为BIGINT。这意味着您要更改的列类型。所以只需运行此查询。
ALTER TABLE tableA CHANGE ts ts BIGINT;
这里ts和ts相同,意味着您不是要更改列名,而是更改列类型;如果您想更改列名,也只需运行它。
ALTER TABLE tableA CHANGE ts new_col BIGINT;
现在运行
hive> describe tableA; OK id int new_col bigint