Hive 有没有办法改变配置单元表中的列类型?

Hive 有没有办法改变配置单元表中的列类型?,hive,metadata,Hive,Metadata,当前模式为: hive> describe tableA; OK id int ts timestamp 我想将ts列更改为BIGINT,而不删除表并重新创建。有可能吗?找到了解决方案: ALTER TABLE tableA CHANGE ts ts BIGINT AFTER id; 有关完整的详细信息,请参见此部分:在配置单元中使用此语法通常很容易更改/修改exesting表 ALTER TABLE table_name CHANGE old_col_name n

当前模式为:

hive> describe tableA;
OK
id      int
ts      timestamp
我想将
ts
列更改为
BIGINT
,而不删除表并重新创建。有可能吗?

找到了解决方案:

ALTER TABLE tableA CHANGE ts ts BIGINT AFTER id;

有关完整的详细信息,请参见此部分:

在配置单元中使用此语法通常很容易更改/修改exesting表

ALTER TABLE table_name CHANGE old_col_name new_col_name new_data_type
在这里,您可以一次更改列名和数据类型。如果您不想更改Colu_名称,只需使旧Colu_名称和新Colu_名称相同即可。嗯

来解决你的问题吧。如果要将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 蜂巢>描述表; 好啊 id int
new\u col bigintally如果使用分区,则必须
更改表{table\u name}分区列({column\u name}{column\u type})
。Hive很容易造成很多不一致性。也许是我,但Hive很令人沮丧:-(@interskh是否有办法将其应用于一条语句中的多个列?例如
altertable TABLE a CHANGE a,b,c a,b,c BIGINT;
我尝试使用逗号分隔列,但无效。我询问的原因是我的表是使用hive的色调界面创建的,
DECIMAL
默认值为
(10,0)
但是我需要
(38,0)
你知道如果数据存储为ORC或拼花地板,这是否也会起作用吗?如果数据存储在拼花地板中,并且你不在Hive版本1.2,请不要使用。假设这在Hive 1.2中是固定的,但我的公司使用1.1。我必须删除我的表并重新开始。 hive> describe tableA; OK id int new_col bigint