症状:在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并没有声明)。