Hive alter table change column name 为重命名的列提供“NULL”

Ada*_*rsh 5 hadoop hive bigdata hiveql parquet

我曾尝试将表中的现有列重命名为新列。但是在名称更改后,新列只给我 'NULL' 值。

Parquet 中表的存储格式。

例如,

'user' 是字符串数据类型的 'Test' 表中的一列。插入了一个值为“John”的样本记录。

Select user from Test;
Run Code Online (Sandbox Code Playgroud)

结果:约翰

我已将 'user' 重命名为 'user_name' 而不更改任何数据类型。

ALTER TABLE Test CHANGE user user_name String;

Select user_name from Test;
Run Code Online (Sandbox Code Playgroud)

结果:空

请让我知道如何解决这个问题?

在这种情况下,MSCK 修复表命令是否有用?

我是否需要再次重新加载此表来解决此问题?

问候, 阿达什 KS

小智 -1

您可以做的是添加新字段,执行一次插入覆盖,然后删除旧字段。像这样的东西:

ALTER TABLE temp.Test ADD COLUMNS (user_new string) CASCADE;
Run Code Online (Sandbox Code Playgroud)
insert overwrite table temp.Test
select 
      user_a,
      a,
      b,
      c,
      user_a as user_new
from temp.test;
Run Code Online (Sandbox Code Playgroud)
ALTER TABLE temp.test  REPLACE COLUMNS(user_new string, a string, b string, c string );
Run Code Online (Sandbox Code Playgroud)