Hive alter table更改列名称将“ NULL”赋予重命名的列

时间:2018-08-30 07:28:24

标签: hadoop hive bigdata hiveql parquet

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

Parquet中表的存储格式。

例如

  

“用户”是字符串数据类型的“测试”表中的一列。插入了一个示例记录,其值为'John'。

Select user from Test;
  

结果:约翰

     

我已将“用户”重命名为“用户名”,而未更改任何数据类型。

ALTER TABLE Test CHANGE user user_name String;

Select user_name from Test;
  

结果:NULL

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

  

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

     

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

关于, Adarsh K S

1 个答案:

答案 0 :(得分:0)

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

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