Hadoop Mapreduce MultipleOutputs输出控制台

时间:2015-12-29 00:35:57

标签: hadoop mapreduce output multipleoutputs

我在使用和不使用multipleOutputs运行mapreduce时看到控制台日志之间存在差异。

我有一个仅映射器作业输出到文本文件。

未配置MultipleOutputs,

我的Mapper中的代码段:

context.write(null,new Text(value));

控制台输出摘录

Map-Reduce Framework
       Map input records=2
       Map output records=2

使用MultipleOutputs,

我的Mapper中的代码段:

multipleOutputs.write(null,new Text(value),FileOutputFormat.getOutputPath(context).toString() +  Path.SEPARATOR + "v");

控制台输出摘录

Map-Reduce Framework
       Map input records=2
       Map output records=0

避免空档文件的驱动程序代码

LazyOutputFormat.setOutputFormatClass(job, TextOutputFormat.class);

请注意输出记录的数量。虽然,它在第二种情况下显示为0,但我仍然在文件中看到正确的输出。生成的文件名为v-m-00000。

我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

映射输出记录计算映射器发出的键值对的数量(使用context.write())。这是将记录器从映射器传递到reducer的唯一方法,这就是为什么这个计数器存在的原因。

如果你想计算从任何其他方法写入的记录数,或者实际上,如果你想要计算其他任何东西,你必须定义自己的自定义计数器,我建议在你的情况下。