我在年,月,日和小时分区表。如果我将下面的INSERT OVERWRITE用于特定的分区,它会将文件放置在适当的目录结构下。该文件包含字符串ABC: -Hive在INSERT OVERWRITE的分区目录下创建额外的子文件夹
INSERT OVERWRITE TABLE testtable PARTITION(year = 2017, month = 7, day=29, hour=18)
SELECT tbl.c1 FROM
(
select 'abc' as c1
) as tbl;
但是,如果使用下面的语句,令人惊讶的蜂房文件夹“小时= 18”下创建三个新的文件夹。
而且里面有这三个子文件夹中的文件。
INSERT OVERWRITE TABLE testtable PARTITION(year = 2017, month = 7, day=29, hour=18)
SELECT tbl.c1 FROM
(
select 'abc' as c1
union ALL
select 'xyz' as c1
union ALL
select 'mno' as c1
) as tbl;
当我查询数据时,它显示数据的预期。但为什么它会创建这3个新文件夹?由于分区方案仅适用于年,月,日和小时,我不希望Hive为其他任何内容创建文件夹。
可能不是问题是底部分区内的额外文件夹将导致查询错误,除非您已打开子目录搜索 – DogBoneBlues
SET hive.mapred.supports.subdirectories = TRUE; SET mapred.input.dir.recursive = TRUE; – DogBoneBlues