首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以更改Hive中已分区表上的列的元数据?

问是否可以更改Hive中已分区表上的列的元数据?
EN

Stack Overflow用户
提问于 2019-10-11 02:44:10
回答 1查看 661关注 0票数 1

这是我之前问过的一个问题的延伸:是否可以更改单元中的分区元数据?

我们正在探索更改表上的元数据的想法,而不是对SELECT语句中的数据执行强制转换操作。改变MySQL亚稳态中的元数据是非常容易的。但是,是否有可能将元数据更改应用于分区表上的列(它们是每天进行的)?注意:该列本身不是分区列。它是一个简单的ID字段,正在从STRING更改为BIGINT。

否则,当历史数据是字符串时,可能会遇到当前和未来数据类型为BIGINT的问题。

问题:可以更改Hive中的分区元数据吗?如果是,怎么做?

注意:我作为一个单独的问题来问这个问题,因为原来的答案似乎是分区表上的一列,也就是分区列。所以,我不想把水弄浑。

更新:

我运行了ALTER TABLE .. CHANGE COLUMN ... CASCADE命令,但得到了以下错误:

处理语句时出错:失败:执行错误,从org.apache.hadoop.hive.ql.exec.DDLTask返回代码1。不允许更改具有外部架构的Avro存储表的架构。考虑从表属性中删除avro.schema.literal或avro.schema.url。

元数据存储在单独的avro文件中。我可以确认更新的元数据在avro文件中,而不是在单个分区文件中。

注意:表作为外部存储。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-11 17:19:05

您可以轻松地更改列类型:

使用Hive中的alter,将类型更改为STRING,等等:

代码语言:javascript
复制
alter table table_name change column col_name col_name string cascade; --change to string

见文档。

带有ALTER TABLE CHANGE COLUMN命令的CASCADE更改表元数据的列,并对所有分区元数据进行相同的更改。

或者,您可以重新创建表,如下所示:https://stackoverflow.com/a/58299056/2700344

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58333567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档