我正在使用 Hive 的动态分区,并且我遇到了一个问题,即除非添加新分区,否则一列没有填充数据。我创建了一个小的演示示例来演示。
1.创建表蔬菜(name string,count bigint)按(year int,month int,day int)分区; 2.创建外部表dataForVeg(name string, count bigint, weight string, year int, month int, day int) 行格式分隔字段,以' '结尾; 3.将data1加载到dataforveg 4. 设置 hive.exec.dynamic.partition.mode=nonstrict; 5.插入表蔬菜分区(年,月,日)从dataforveg中选择名称,计数,年,月,日; 6. hive> select * from vegetables where day='5'; 番茄 5 2013 11 5 卷心菜 3 2013 11 5 7.蜂巢>改变餐桌蔬菜添加列(重量加倍); 8.蜂巢>描述蔬菜; 名称字符串 计算大整数 重量翻倍 年份 月份整数 日整数 9. hive> select * from vegetables where day='5'; 番茄 5 NULL 2013 11 5 卷心菜 3 NULL 2013 11 5 蜂巢> 从蔬菜中选择 * 其中 day='4'; 马铃薯 2 NULL 2013 11 4 10.加载覆盖data2到dataforveg 11. hive>从dataforveg中选择*; 胡萝卜 10 5 2013 11 5 胡椒 15 2 2013 11 5 12. hive> select * from vegetables where day='5'; 番茄 5 NULL 2013 11 5 卷心菜 3 NULL 2013 11 5 胡萝卜 10 NULL 2013 11 5 胡椒 15 NULL 2013 11 5 13.将覆盖data3加载到dataforveg 蜂巢>从dataforveg中选择*; 甜菜 4 1 2013 11 6 西兰花 3 1 2013 11 6 14.蜂巢>从蔬菜中选择*; 马铃薯 2 NULL 2013 11 4 番茄 5 NULL 2013 11 5 卷心菜 3 NULL 2013 11 5 胡萝卜 10 NULL 2013 11 5 胡椒 15 NULL 2013 11 5 甜菜 4 1.0 2013 11 6 西兰花 3 1.0 2013 11 6
从示例中可以看出,添加新分区时正在更新数据。问题:有没有办法在第 12 步中刷新胡萝卜和胡椒的新字段“重量”的值?换句话说,有没有办法用已经存在的分区中的数据填充新添加的列?