我有一个avro hive表,按日期分区。
acct_no <string> acct_cd <int> date <date>
acct01 01 2022-10-31
acct02 02 2022-10-31
acct03 03 2022-10-31
我想把acct_cd重命名为account_code
i used command
alter table <table_name> change acct_cd account_code int;
它改变了table属性,但是数据丢失了:
acct_no <string> account_code <int> date <date>
acct01 null 2022-10-31
acct02 null 2022-10-31
acct03 null 2022-10-31
如何避免数据丢失和更改列名?
每个hive, hive,change
列名称只是更改hive元数据,底层数据/结构保持原样。这意味着,您必须在更改后处理数据。
你有两个选择
- 创建备份表。删除原始表。新建一个表,使用新的列名,并从备份表插入到新表中。
- 创建备份表。重命名原表中的列。使用
insert overwrite table
命令从备份表中填充原表