map减少输出文件:part-r- *和part- *

时间:2012-06-07 02:25:12

标签: hadoop mapreduce

我对map reduce输出部分文件有一些疑问。

    1 GT; map-reduce文件中part-r- *文件和part- *文件之间有什么区别? part-r- *从mapper输出,part- *从reducer输出?
    2 - ;如果reducer没有产生任何结果,mapper输出将停留还是将被删除?

3 个答案:

答案 0 :(得分:2)

通常,part-r- *来自减速器。 MultipleOutputs允许您使用不同的命名约定。如果没有减少步骤,则输出将为part-m- *。据我了解,如果定义了reducer,则无论reducer是否产生任何东西,都会删除映射器输出。除非您使用LazyOutputFormat,否则即使它们为空,也会生成reducer输出文件。你在哪里找到了没有以m-nnnnn或r-nnnnn结尾的part- *文件?

答案 1 :(得分:1)

对于旧版本(< 0.2),他们过去只输出part-000 *。但现在,我们看到part-m-n *(n代表数字ex:part-m-00000)和part-r-n *文件。 part-r-n *用于减速器的输出。 part-m-n *是组合器的输出。 (如果我不使用合并器,我不会得到任何part-m-n *。我不确定它是否是默认行为。)

答案 2 :(得分:0)

part-00000是旧API中由映射器或Reducer创建的输出目录。在新的API中,它略微更改为map-output的part-m- *和reducers输出的part-r- *。 有关更多详细信息,请参阅OReilly的Hadoop权威指南,第28页。