赞
踩
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官方文档描述:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。