我正在使用Hadoop 2.6.5,编写编写3个输出文件的程序。
当我在本地运行时,该程序运行良好,并创建了3个输出文件。
当我使用EMR运行它时,此行崩溃-文件已存在:O
我了解这不是将Hadoop与EMR结合使用的方法。
我看过这篇文章:
https://forums.aws.amazon.com/thread.jspa?threadID=131036
但是我没有这种方法:mos.getCollector
而且我没有找到有关如何使用EMR在Java中使用mos的文档。
这是我的Reducer的代码:
@Override
protected void setup(Context context)
throws IOException, InterruptedException {
// TODO Auto-generated method stub
mos = new MultipleOutputs<>(context);
}
@Override
protected void cleanup(Reducer<Text, IntWritable, Text, IntWritable>.Context context)
throws IOException, InterruptedException {
// TODO Auto-generated method stub
mos.close();
}
... reduce方法的结束-写入结果文件部分(1、2和3)
if (keyArr.length == 1) {
mos.write(key, result, "ones.txt");
}
else if (keyArr.length == 2) {
mos.write(key, result, "twos.txt");
}
else {
mos.write(key, result, "threes.txt");
}
最佳答案
您可以上传异常(exception)吗?
似乎是读/写并发