问题背景
假如我们有一个分区表名为partition_table,对该表执行如下添加字段new_c的sql语句:
alter table partition_table add columns(new_c STRING);
在查询partition_table通过insert overwrite覆写的历史分区数据时,发现新增字段new_c为null数据!
问题原因
修改Hive分区表结构以后,元数据库中的SDS中该表对应的CD_ID会改变,但是该表历史分区下面对应的CD_ID还是原来表的CD_ID,导致无法获取新增加字段的值数据。SDS表主要保存文件存储的基本信息,如INPUT_FORMAT、OUTPUT_FORMAT、是否压缩等。
注意:如果是增加字段之后新创