1. 原始数据结构:

1.原始表结构

select id,name,dt from test1

2. 增加字段

2.现在需要往原始表中增加address(地址)字段

alter table test1 add columns (address string COMMENT '地址');  

3.增加过字段后,新增加字段的数据一直显示为null,即使重新overwrite数据也为 null

最终解决方式:

1.hive中往分区表中增加字段时,加上cascade关键字;然后再重新insert overwrite,这样再查询新增字段就会有数据了。如下:

1.新增字段

alter table test1 add columns (address string COMMENT ' 地址 ') cascade;

2.重新插入数据

insert overwrite table test1 partition(dt)

select dt,id,name,address,dt from test1;

2. 如果一开始新增字段的时候,没有加 CASCADE 这个关键字,可以通过 change 来进行修改.r如下:

alter table test1 change column address address int (修改后列的属性) CASCADE;

注意:对于执行了 add column 语句之后新生成的分区,是不会有问题的,Hive 会自动维护新分区中的元数据。

 hive官方文档描述:

参考转载:https://www.cnblogs.com/zhangqian27/p/12654067.html

精彩链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: