Hadoop 如何减少Apache配置单元中的输出文件数

Hadoop 如何减少Apache配置单元中的输出文件数,hadoop,mapreduce,hive,emr,Hadoop,Mapreduce,Hive,Emr,有人知道有一种工具可以将ApacheHadoop的输出文件“压缩”成更少的文件或一个文件吗。目前我正在将所有文件下载到本地计算机,并将它们连接到一个文件中。那么,是否有人知道有一个API或一个工具可以做同样的事情呢。 提前感谢。限制输出文件的数量意味着您要限制减速机的数量。您可以在配置单元外壳中的mapred.reduce.tasks属性的帮助下实现这一点。例如: hive> set mapred.reduce.tasks = 5; 但这可能会影响查询的性能。或者,在完成查询后,可以从

有人知道有一种工具可以将ApacheHadoop的输出文件“压缩”成更少的文件或一个文件吗。目前我正在将所有文件下载到本地计算机,并将它们连接到一个文件中。那么,是否有人知道有一个API或一个工具可以做同样的事情呢。
提前感谢。

限制输出文件的数量意味着您要限制减速机的数量。您可以在配置单元外壳中的
mapred.reduce.tasks
属性的帮助下实现这一点。例如:

hive>  set mapred.reduce.tasks = 5;
但这可能会影响查询的性能。或者,在完成查询后,可以从HDFS shell使用
getmerge
命令。此命令将源目录和目标文件作为输入,并将src中的文件连接到目标本地文件中

用法:

bin/hadoop fs -getmerge <src> <localdst>
bin/hadoop fs-getmerge
HTH

参见

set hive.merge.mapfiles=true;     -- Merge small files at the end of a map-only job.
set hive.merge.mapredfiles=true;  -- Merge small files at the end of a map-reduce job.

set hive.merge.size.per.task=???; -- Size (bytes) of merged files at the end of the job.

set hive.merge.smallfiles.avgsize=??? -- File size (bytes) threshold
-- When the average output file size of a job is less than this number, 
-- Hive will start an additional map-reduce job to merge the output files 
-- into bigger files. This is only done for map-only jobs if hive.merge.mapfiles 
-- is true, and for map-reduce jobs if hive.merge.mapredfiles is true.