重命名配置单元ORC表中的列名称会导致“新”列中的值为NULL

问题描述

我正在尝试使用alter命令在配置单元(ORC表)表中重命名列名。列已重命名,但数据已修改Null值。

示例:

select city from p_details;

city

Santa Fe Springs
Jiangmen

**alter table p_details change city city_name string;**

select city_name from p_details;

city_name

NULL
NULL

解决方法

根据Hive manual:“列更改命令将仅修改Hive的元数据,而不会修改数据。用户应确保表/分区的实际数据布局符合元数据定义。”表示如果列更改是兽人或镶木表,则列更改将不会更改任何基础数据。 尝试执行msck repair table <table_name>,但这可能无济于事。

您始终可以使用重命名的列来创建新表。