当前架构是:
hive> describe tableA;
OK
id int
ts timestamp
我想将ts
列更改为BIGINT
不删除表并重新创建。可能吗?
找到了解决方案:
ALTER TABLE tableA CHANGE ts ts BIGINT AFTER id;
有关完整详细信息,请参阅此内容:https ://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-AlterColumn
ALTER TABLE table_name CHANGE col_name col_name newType
在 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;
现在运行
蜂巢>描述表A; 好的 id int new_col 大整数