hadoop mapreduce多输出输出控制台

vqlkdk9b  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(580)

当我运行带有和不带有多个输出的mapreduce时,我看到控制台日志之间存在差异。
我有一个Map只工作,输出到一个文本文件。
如果没有配置多路输出,
“我的Map器”中的代码段:

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

控制台输出摘录

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

有了多重输出,
“我的Map器”中的代码段:

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。
我错过什么了吗?

oknrviil

oknrviil1#

Map输出记录统计Map程序发出的键值对的数目(使用 context.write() ). 这是将记录从Map器传递到还原器的唯一方法,这就是此计数器存在的原因。
如果要计算从任何其他方法写入的记录数,或者实际上,如果要计算任何其他方法写入的记录数,则必须定义自己的自定义计数器,我建议您这样做。

相关问题