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

阅读: 评论:0

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

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

原文:  

最近工作中遇到一个问题:
对于分区表添加字段,向已存在分区中插入数据,结果新增字段的值全部为null。
注:是已存在分区,新的分区并不会产生该问题;无论是内部表还是外部表均有该问题。

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

Hive版本:2.2.0
创建分区外部表test1

create external table test1(id int) partitioned by (pt_d varchar(11)) location '/user/test1'


插入数据

insert into table test1 partition(pt_d='20170101') values(1),(2);

   
查看数据

select * from test1;

   
添加新的字段name

可以通过alter add,也可以通过alter replace

alter table test1 replace columns (
    id int
   ,name string
);


再次查看数据

select * from test1;

 

修复表

msck repair table test1;

  
向分区20170101插入数据

insert overwrite table test1 partition(pt_d='20170101') values(1,'1xiao'),(2,'1da');

  

查看数据

select * from test1;

  
解决方法

解决该问的关键是删除旧分区,因为虽然HDFS上的数据更新了,但是我们查询的时候仍然查询的是旧的元数据信息(即Mysql中的信息)
在我们插入完数据之后,需要删除元数据的旧分区

alter table table_name drop partition (pt_d='20170101');

 

然后有两种方式恢复数据

    1.添加该分区

alter table table_name add partition(pt_d='20170101');

  

或者通过修复分区也可以
- 2.修复表结构

msck repair table table_name;

  

再次查看数据,发现插入的数据成功了!!!
---------------------  
作者:刘金宝_Arvin  
来源:CSDN  
原文:  
版权声明:本文为博主原创文章,转载请附上博文链接!

本文发布于:2024-02-02 07:48:28,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170683130942379.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:分区表   字段   解决方法   Hive   bug
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23