如何将现有的分区小文件合并到一个分区中的一个大文件中。
例如我有一个表user1,它包含列fname,lname和partition列是day。
我使用下面的脚本
创建了表格CREATE TABLE user1(fname string,lname string)parittioned By(day int);
将数据插入分区表后,它将如下所示。
fname lname day
.....................
AA AAA 20170201 ....>partition 20170201
BB BBB 20170201
...................
CC CCC 20170202 ......>partition 20170202
DD DDD 20170202
....................
EE EEE 20170203 .......>partition 20170203
FF FFF 20170203
.......................
GG GGG 20170204 ........>partition 20170204
HH HHH 20170204
.......................
当我在分区列的帮助下执行select查询,即day = 20170201。
select * from user1 where day=20170201;
它会给出如下结果
AA AAA 20170201
BB BBB 20170201
基于上表我想在我的分区表(即USer1)中将所有小文件,即day = 20170201和day = 20170202以及day = 20170203合并到分区day = 20170203中.i.e。它应该如下所示。
fname lname day
.....................
AA AAA 20170201
BB BBB 20170201
CC CCC 20170202
DD DDD 20170202
E EEE 20170203 .......>partition 20170203
FF FFF 20170203
.......................
GG GGG 20170204 ........>partition 20170204
HH HHH 20170204
.......................
你能否就此提出建议,我该如何做到这一点?
先谢谢。
答案 0 :(得分:0)
partition_day
分区的新表:CREATE TABLE user_new(fname string,lname string, day int) parittioned By (partition_day int);
case
)insert overwrite table user_new partition (partition_day) select fname,lname, day, case when day <= 20170203 then 20170203 when day > 20170203 then 20170204 end as partition_day from user1 ;