我曾尝试将表中的现有列重命名为新列。但名称更改后,新列只给我“NULL”值。
Parquet 中表的存储格式。
例如,
“user”是“Test”表中字符串数据类型的列。插入了值为“John”的示例记录。
Select user from Test;
结果:约翰
我已将“user”重命名为“user_name”,但没有更改任何数据类型。
ALTER TABLE Test CHANGE user user_name String;
Select user_name from Test;
结果:空
请让我知道如何解决这个问题?
MSCK 修复表命令在这种情况下是否有用?
我是否需要再次重新加载此表来解决此问题?
问候,
阿达什·K·S
您可以做的是添加新字段,执行一次插入覆盖,然后删除旧字段。
像这样的事情:
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 );
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)