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