控制hadoop映射器输出文件的数量

use*_*439 1 java hadoop mapreduce

我有一份hadoop的工作.当工作被陈述时,我开始使用一些映射器.每个映射器都会将一些文件写入磁盘,例如part-m-00000,part-m-00001.据我所知,每个映射器创建一个零件文件.我有大量的数据,所以必须有多个映射器,但我可以以某种方式控制这个输出文件的数量?我的意思是,hadoop将启动,例如10个映射器,但是只有三个部分文件?

我发现这篇文章 如何在Hadoop中输出多个reducers只有一个part文件? 但是有使用旧版本的hadoop库.我正在使用org.apache.hadoop.mapreduce.*中的类,而不是来自org.apache.hadoop.mapred的类.*

我正在使用hadoop版本0.20和hadoop-core:1.2.0.jar

使用新的hadoop API有可能做到这一点吗?

Arn*_*-Oz 5

如果没有减速器,则输出文件的数量等于减速器的数量或映射器的数量.

您可以向作业添加一个reducer,以便将所有映射器的输出定向到它,并获得单个输出文件.请注意,效率会降低,因为所有数据(映射器的输出)都将通过线路(网络IO)发送到减速器将运行的节点.此外,由于单个进程(最终)将获得所有数据,因此它可能会运行得更慢.

通过wat,有多个部分的事实不应该非常重要,因为您可以将包含它们的目录传递给后续作业