Hive分区表新增字段为null的bug及解决方法

环境:hive-1.1.0-cdh5.13.0

重跑 insert overwrite table tablename partition(dt=’${dt}’) …新加的字段为null的问题:

  • 执行修改表语句:

    alter table table_name add columns(newCol string comment ‘新加的字段’);

  • 重新insert overwrite 历史已存在的分区后发现 newCol字段为null,新分区正常,无论是内部表还是外部表均有该问题。

  • 在新增字段之后及时对表进行msck repair table 仍然存在问题

原因:
使用alter table语句更新结构时,由于默认更新现有表结构,对原有分区无改动,导致原有分区改变数据时,新字段为null

解决办法:
删除旧分区,因为虽然HDFS上的数据更新了,但是我们查询的时候仍然查询的是旧的元数据信息(即Mysql中的信息)

  • 在插入完数据后,需要删除元数据的旧分区
    alter table table_name drop partition (dt=‘dt’);

  • 修复分区的两种方式:
    添加该分区
    alter table table_name add partition(dt=‘dt’);
    通过修复分区也可以
    msck repair table table_name;

再次查询数据,发现插入的数据成功了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值