【发布时间】:2020-07-31 04:17:40
【问题描述】:
在 hive 表上工作,我需要如下更改列名,它按预期工作并更改列名,但该列的下划线值变为 NULL。
ALTER TABLE db.tbl CHANGE hdfs_loaddate hdfs_load_date String;
此处更改的列名是 hdfs_load_date,重命名列名后值变为 NULL。
有没有人想办法解决这个问题。提前致谢!!
【问题讨论】:
在 hive 表上工作,我需要如下更改列名,它按预期工作并更改列名,但该列的下划线值变为 NULL。
ALTER TABLE db.tbl CHANGE hdfs_loaddate hdfs_load_date String;
此处更改的列名是 hdfs_load_date,重命名列名后值变为 NULL。
有没有人想办法解决这个问题。提前致谢!!
【问题讨论】:
@Ajay_SK 引用本文:Hive Alter table change Column Name
有一条评论:
请注意,如果是 parquet 表,则列更改不会更改任何基础数据。也就是说,如果表中已经有数据,重命名列不会使该列中的数据可以在新名称下访问:select a from test_change; 1 更改表 test_change 更改 a1 int;从 test_change 中选择 a1;空
他是parquet特有的,但是你描述的场景是类似的,你已经成功改名了,但是hive仍然认为原始数据在原始key中。
解决您的问题的更好方法是创建一个您想要更改列名的架构的新表。然后执行 Insert INTO new table select FROM * old table。
【讨论】: