Is there a way to alter column type in hive table?

2020-02-17 09:31发布

The current schema is:

hive> describe tableA;
OK
id      int
ts      timestamp

I want to change ts column to be BIGINT without dropping table and recreate again. Is it possible?

标签: hive metadata
3条回答
Deceive 欺骗
2楼-- · 2020-02-17 09:47
ALTER TABLE table_name CHANGE col_name col_name newType
查看更多
仙女界的扛把子
3楼-- · 2020-02-17 09:57

It's simple usually to change/modify the exesting table use this syntax in Hive.

ALTER TABLE table_name CHANGE old_col_name new_col_name new_data_type

Here you can change your column name and data type at a time. If you don't want to change col_name simply makes old_col_name and new_col_name are same. Ok.

Come to your problem. If you want to change ts column to be BIGINT.It means column-type you are changing. so simply run this query.

ALTER TABLE tableA CHANGE ts ts BIGINT;

Here ts and ts are same, means you are not changing column name, but changing column-type; if you wish to change column name also simply run it.

ALTER TABLE tableA CHANGE ts new_col BIGINT;

Now run

hive> describe tableA;
OK
id      int
new_col      bigint
查看更多
闹够了就滚
4楼-- · 2020-02-17 10:04

Found the solution:

ALTER TABLE tableA CHANGE ts ts BIGINT AFTER id;

See this for complete details: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-AlterColumn

查看更多
登录 后发表回答