症状:在Reduce中使用MultipleOutputs根据输入的key输出到某个MultipleOutputs.addNamedOutput()中,程序运行结束却没有对应的输出文件。

解决:在Reduce的cleanup方法中调用mos.close();

ps 其他可能原因:

1. reduce一直都没有输入,这个要查看MR Job的计数器。我之前因为Reduce的输入Key格式跟Map 输出要求不匹配,导致Reduce一直没有输入,这个需要查看MR Job的日志。通过在初始化Job时声明job.setMapOutputKeyClass(T);        job.setMapOutputValueClass();解决(TextOutPutFormat的默认输出key是LongWritable,而我输出Text并没有声明)。

posted on 2012-10-31 12:03  山君  阅读(510)  评论(0编辑  收藏  举报