31

当前架构是:

hive> describe tableA;
OK
id      int
ts      timestamp

我想将ts列更改为BIGINT不删除表并重新创建。可能吗?

4

3 回答 3

68

找到了解决方案:

ALTER TABLE tableA CHANGE ts ts BIGINT AFTER id;

有关完整详细信息,请参阅此内容:https ://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-AlterColumn

于 2013-07-05T22:38:37.157 回答
31
ALTER TABLE table_name CHANGE col_name col_name newType
于 2013-07-17T21:47:10.290 回答
14

在 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 大整数
于 2015-05-11T07:15:01.303 回答