hive alter table change column name为重命名的列指定“null”

ymdaylpp  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(487)

我试图将表中现有的列重命名为新列。但是在名称更改之后,新列只给我'null'值。
Parquet地板中table的存储格式。
例如,
“user”是字符串数据类型的“test”表中的一列。插入值为“john”的示例记录。

Select user from Test;

结果:约翰
我已将“user”重命名为“user\u name”,但未更改任何数据类型。

ALTER TABLE Test CHANGE user user_name String;

Select user_name from Test;

结果:空
请告诉我如何解决这个问题?
msck repair table命令在这种情况下是否有用?
是否需要重新加载此表以修复此问题?
你好,阿达斯·k·s

inb24sb2

inb24sb21#

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

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 );

相关问题