hive replace替换多个_Hive新增字段(column)后,旧分区无法更新数据问题

遇到的问题:

今天给一个hive表增加一个新字段,使用如下语句

alter table  industry_db.product   
add columns(industry_id string comment ‘行业id);

hive数据库表,显示了新增加的字段,我以为添加成功。但如果hive数据表p_date="20200306" 已经有旧的分区 的industry_id将为空且无法更新,即便insert overwrite该分区也不会生效。

但是这种方法还在 新的分区生效,就是以前没运行过的分区。比如我们把p_date作为分区标识符,今天是20200306这个分区。如果在20200307这个分区就可以,但是在20200306已经运行过的分区就不行。

解决方法:

解决方法需要在增加industry_id时加上cascade关键字。新增字段含义如下:

cascade为“级联”,不仅变更新分区的表结构(metadata),同时也变更旧分区的表结构。

alter table  industry_db.product   
add columns(industry_id string comment ‘行业id) cascade;

如果已经执行添加操作,并且没有带cascade,可以尝试下面的方法:

1、使用replace 恢复表结构,这样历史的分区数据都不会消失
alter table industry_db.product replace
columns(product_name string comment ‘产品名’);
2、然后再使用带cascade添加字段
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值