有没有办法改变hive表中的列类型?

时间:2013-07-05 22:21:53

标签: hive metadata

目前的架构是:

hive> describe tableA;
OK
id      int
ts      timestamp

我想在不删除表的情况下将ts列更改为BIGINT并重新创建。有可能吗?

3 个答案:

答案 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