Merge 如何减少SQL的生成文件;Alter Table/Partition CONTAINATE";在蜂箱里?

Merge 如何减少SQL的生成文件;Alter Table/Partition CONTAINATE";在蜂箱里?,merge,hive,concatenation,apache-tez,Merge,Hive,Concatenation,Apache Tez,配置单元版本: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: 我使用HQL合并特定表/分区的文件。但是,执行后,输出目录中仍然有许多文件;其规模远远小于256000000。因此,如何减少输出文件的数量 顺便说一句,使用MapReduce而

配置单元版本: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:

我使用HQL合并特定表/分区的文件。但是,执行后,输出目录中仍然有许多文件;其规模远远小于256000000。因此,如何减少输出文件的数量


顺便说一句,使用MapReduce而不是Tez也不起作用。

您可以将您的reducer编号设置为1,这样只会创建一个输出文件

你可以用以下方法来做

set mapred.reduce.tasks=1

也许你可以试试插入覆盖表。。。分区(…)从中选择*。


这一个可以使用Tez文件的合并设置。

请检查注释:顺便说一句,使用MapReduce代替Tez也不起作用。因此,如果他愿意,他也可以使用MapReduce。此外,你也可以为Tez使用上面的配置。我也可以向你保证它确实解决了这个问题。也许tez的情况略有不同,但它确实适用于MapReduce,这是用户要求的。我现在已经尝试过了,结果是我有25个文件。此外,触发的MapReduce作业是仅映射的作业。可能您正在使用不同的配置单元版本。我使用的是Hive1.2.1,文件是ORC。在这种情况下,你的解决方案不起作用。那么,你能试着将映射器设置为1吗?那么,我没主意了。很抱歉。你能发布表DDL吗?
set mapred.reduce.tasks=1