如何在ORC分区蜂巢表的中间添加列,并且仍然能够查询具有新结构的旧分区文件



目前,我有一个分区的orc"托管"(错误地创建为内部第一(hive table in Prod,至少100天,按年,月份,每天分配的数据分区(〜16GB((。

此表大约有160列。我的要求是在此表中间添加一列,并且仍然能够查询较旧的数据(分区文件(。如果新添加的列显示了该列的null,则可以旧数据。

到目前为止我做了什么?

1(首先使用下面将表转换为外部以保留数据文件

之前保留数据文件
alter table <table_name> SET TBLPROPERTIES('EXTERNAL'='TRUE');

2(在中间用新列掉下并重新创建表格,然后更改表以添加分区文件

但是,在娱乐后我无法阅读表。我得到此错误消息

[Simba][HiveJDBCDriver](500312) Error in fetching data rows: *org.apache.hive.service.cli.HiveSQLException:java.io.IOException: java.io.IOException: ORC does not support type conversion from file type array<string> (87) to reader type int (87):33:32;

其他方法可以做到这一点吗?

无需掉落并重新创建表。只需使用以下语句。

ALTER TABLE default.test_table ADD columns (column1 string,column2 string) CASCADE; 

使用级联命令的Alter表更改列更改表的元数据的列,并对所有分区元数据进行了相同的更改。

ps - 这将在现有列的末端(但在分区列之前(添加新列。不幸的是,兽人不支持目前中间添加列。

希望有帮助!

相关内容

  • 没有找到相关文章

最新更新