问题:现有分区表添加新字段后,往分区表插入数据,插入的数据有对新字段赋值,hive下查询分区表新添加字段出现新增字段查询结果为null,而impala下查询新增字段有值。
目的:为了验证Hive下的分区表新增字段,然后对新增字段进行赋值,通过hive或者impala连接串的方式查询表中的的新增字段,确认新增字段是否有值。
1、创建表
1)在hive下建表
脚本如下:
create table adp_usr.t_test_20220119(id int, name string, age int) partitioned by (type string)
STORED AS PARQUET;
2)在impala下进行元数据刷新
invalidate metadata adp_usr.t_test_20220119;
2、插入数据
在impala下进行插入数据
insert overwrite adp_usr.t_test_20220119(id,name,age) partition (type='A1')
values (1,'zhangsan',18),(2,'lisi',23);
insert overwrite adp_usr.t_test_20220119 partition (type='A2')
values(3,'wangwu',22),(4,'zhaoliu',28),(5,'tianqi',24);
3、解决步骤:
3.1、新增字段
1)hive下执行
ALTER TABLE adp_usr.t_test_20220119 ADD columns (sex string comment '性别') ;
ALTER TABLE adp_usr.t_test_20220119 ADD columns (score int comment '分数') cascade;
2)impala下进行元数据刷新
invalidate metadata adp_usr.t_test_20220119;
3.2、插入数据
impala下执行
1)往已存在的分区中插入数据
insert overwrite adp_usr.t_test_20220119 partition (type='A2')
values(3,'wangwu',22,'男',88),(4,'zhaoliu',28,'男',88),(5,'tianqi',24,'女',88);
1)往新分区中插入数据
insert overwrite adp_usr.t_test_20220119 partition (type='A3')
values(3,'wangwu',22,'男',94),(4,'zhaoliu',28,'男',87),(5,'tianqi',24,'女',96);
4、查询数据
1)hive下查询
- 查询语句:select * from adp_usr.t_tes_20220119;
-
查询结果:
2)impala下查询
- 查询语句:select * from adp_usr.t_tes_20220119;
- 查询结果:
5、结论:
在HIVE下的分区表新增字段不管是否有添加cascade关键字,给新增字段赋值,新增字段都有值。