这是我之前提出的问题的扩展:是否可以在 HIVE 中更改分区元数据?
我们正在探索更改表上的元数据的想法,而不是对 SELECT 语句中的数据执行 CAST 操作。更改 MySQL 元数据中的元数据非常简单。但是,是否可以将元数据更改应用于分区表上的列(它们是每天的)?注意:列本身不是分区列。这是一个简单的 ID 字段,正在从 STRING 更改为 BIGINT。
否则,我们可能会遇到当前和未来数据为 BIGINT 类型而历史为 STRING 的情况。
问题:是否可以更改 Hive 中的分区元数据?如果是,如何?
注意:我将此作为一个单独的问题提出,因为原始答案似乎是针对分区表上的列,该列也是分区列。所以,我不想搅浑水。
更新:
我运行了ALTER TABLE .. CHANGE COLUMN ... CASCADE
命令,但出现以下错误:
处理语句时出错:FAILED:执行错误,从 org.apache.hadoop.hive.ql.exec.DDLTask 返回代码 1。不允许更改具有外部架构的 Avro 存储表的架构。考虑从表属性中删除 avro.schema.literal 或 avro.schema.url。
元数据存储在单独的 avro 文件中。我可以确认更新的元数据在 avro 文件中,但不在单个分区文件中。
注意:该表存储为EXTERNAL。