首先先让我们来创建一张测试表
hive> create table test(id string)partitioned BY (day string);
OK
Time taken: 0.115 seconds
hive>
从另一张表中的数据 id 查询出来插入当前测试表中
hive> insert into test PARTITION(day='2016-05-06') select id from on_duty_report;
hive> select * from test;
OK
1461662887 2016-05-06
1461662887 2016-05-06
1461662887 2016-05-06
1461662887 2016-05-06
1461662887 2016-05-06
1461662887 2016-05-06
1461662887 2016-05-06
1461662887 2016-05-06
1461662887 2016-05-06
1461662887 2016-05-06
1461684396 2016-05-06
1462418503 2016-05-06
Time taken: 0.043 seconds, Fetched: 12 row(s)
然后我们再来添加一个为 name 的字段
hive> ALTER TABLE test ADD COLUMNS(name string);
OK
Time taken: 0.073 seconds
hive> desc test;
OK
id string
name string
day string
# Partition Information
# col_name data_type comment
day string
Time taken: 0.05 seconds, Fetched: 8 row(s)
从 on_duty_report 表中查询 ID ,shop_id 覆盖 test 分区。
hive> insert OVERWRITE table test PARTITION(day='2016-05-06') select id,shop_id from on_duty_report;
再次查询该表新增字段为 NULL 值。
hive> select * from test;
OK
1461662887 NULL 2016-05-06
1461662887 NULL 2016-05-06
1461662887 NULL 2016-05-06
1461662887 NULL 2016-05-06
1461662887 NULL 2016-05-06
1461662887 NULL 2016-05-06
1461662887 NULL 2016-05-06
1461662887 NULL 2016-05-06
1461662887 NULL 2016-05-06
1461662887 NULL 2016-05-06
1461684396 NULL 2016-05-06
1462418503 NULL 2016-05-06
Time taken: 0.036 seconds, Fetched: 12 row(s)
解决办法:删除该天分区从新插入数据。