如何在Hive中减少生成SQL“Alter Table / Partition Concatenate”的文件?

时间:2015-10-16 09:01:08

标签: merge hive concatenation apache-tez

Hive版本:1.2.1

配置:

set hive.execution.engine=tez;
set hive.merge.mapredfiles=true;
set hive.merge.smallfiles.avgsize=256000000;
set hive.merge.tezfiles=true;

HQL:

ALTER TABLE `table_name` PARTITION (partion_name1 = 'val1', partion_name2='val2', partion_name3='val3', partion_name4='val4') CONCATENATE;

我使用HQL来合并特定表/分区的文件。但是,执行后输出目录中仍有很多文件;并且它们的大小远小于256000000.那么如何减少输出文件的数量。

BTW,使用MapReduce而不是Tez也没有用。

2 个答案:

答案 0 :(得分:-1)

您可以将减速器编号设置为1,然后只创建一个输出文件。

您可以使用以下内容进行操作;

set mapred.reduce.tasks=1

答案 1 :(得分:-1)

也许你可以尝试insert overwrite table ... partition ( ... ) select * from ...

这个可以使用tezfiles的合并设置。