Hadoop Mapreduce MultipleOutputs 输出控制台
Hadoop Mapreduce MultipleOutputs Output Console
当我 运行 有和没有 multipleOutputs 的 mapreduce 时,我看到控制台日志之间存在差异。
我有一个仅输出到文本文件的映射器作业。
没有配置 MultipleOutputs,
我的映射器中的代码片段:
context.write(null,new Text(value));
控制台输出摘录
Map-Reduce Framework
Map input records=2
Map output records=2
有了多重输出,
我的映射器中的代码片段:
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.
我是不是漏掉了什么?
映射输出记录计算映射器发出的 key-value 对的数量(使用 context.write()
)。这是将记录从映射器传递到缩减器的唯一方法,这就是该计数器存在的原因。
如果你想计算从任何其他方法写入的记录数,或者实际上,如果你想计算其他任何东西,你必须定义你自己的自定义计数器,我建议你这样做。
当我 运行 有和没有 multipleOutputs 的 mapreduce 时,我看到控制台日志之间存在差异。
我有一个仅输出到文本文件的映射器作业。
没有配置 MultipleOutputs,
我的映射器中的代码片段:
context.write(null,new Text(value));
控制台输出摘录
Map-Reduce Framework
Map input records=2
Map output records=2
有了多重输出,
我的映射器中的代码片段:
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.
我是不是漏掉了什么?
映射输出记录计算映射器发出的 key-value 对的数量(使用 context.write()
)。这是将记录从映射器传递到缩减器的唯一方法,这就是该计数器存在的原因。
如果你想计算从任何其他方法写入的记录数,或者实际上,如果你想计算其他任何东西,你必须定义你自己的自定义计数器,我建议你这样做。