具有FileReadyExistsException的Reducer中的Hadoop多路输出

具有FileReadyExistsException的Reducer中的Hadoop多路输出,hadoop,mapreduce,multipleoutputs,Hadoop,Mapreduce,Multipleoutputs,我在减速机中使用多个输出。多重输出将把文件写入名为newidenties的文件夹。代码如下所示: private MultipleOutputs<Text,Text> mos; @Override public void reduce(Text inputKey, Iterable<Text> values, Context context) throws IOException, InterruptedException { ......

我在减速机中使用多个输出。多重输出将把文件写入名为newidenties的文件夹。代码如下所示:

private MultipleOutputs<Text,Text> mos;
@Override
public void reduce(Text inputKey, Iterable<Text> values, Context context) throws IOException, InterruptedException {
        ......
        // output to change report
        if (ischangereport.equals("TRUE")) {
            mos.write(new Text(e.getHID()), new Text(changereport.deleteCharAt(changereport.length() - 1).toString()), "NewIdentities/");
        }
    }
}

@Override
public void setup(Context context) {
    mos = new MultipleOutputs<Text,Text>(context);
}

@Override
protected void cleanup(Context context) throws IOException, InterruptedException {
    mos.close();
}
专用多路输出mos;
@凌驾
public void reduce(文本输入键、Iterable值、上下文)引发IOException、InterruptedException{
......
//输出到更改报告
if(ischangereport.equals(“TRUE”)){
mos.write(新文本(例如getHID()),新文本(changereport.deleteCharAt(changereport.length()-1.toString()),“newIdentifies/”;
}
}
}
@凌驾
公共无效设置(上下文){
mos=新的多输出(上下文);
}
@凌驾
受保护的无效清理(上下文上下文)引发IOException、InterruptedException{
mos.close();
}
它可以在以前运行。但当我今天运行它时,它抛出一个异常,如下所示。我的hadoop版本是2.4.0


错误:org.apache.hadoop.fs.filealreadyexistException:/CaptureOnlyMatchIndex9/TEMP/ChangeReport/newIdentifies/-r-00000客户端192.168.71.128的已存在于org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFileInternal(FSNamesystem.java:2297),位于org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFileInt(FSNamesystem.java:2225)在org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFile(FSNamesystem.java:2178)在org.apache.hadoop.hdfs.server.NameNodeRpcServer.create(NameNodeRpcServer.java:520)在org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.create(ClientNamenodeProtocolServerSideTranslatorPB.java:354)在org.apache.hadoop.hdfs.protocol.proto.ClientNameNodeProtocolProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNameNodeProtocolProtocolProtocolProtocol.java)在org.apache.hadoop.ipc.ProtobufrpEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:585)在org.apache.apache.hadoop.ipc.RPC$Server.call(RPC.java:928)在org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2013)在org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2009)在java.security.AccessController.doPrivileged(Native Method)在javax.security.auth.Subject.doAs(Subject.java:415)在org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1548)上在org.apache.hadoop.ipc.Server$Handler.run(Server.java:2007)在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)在sun.reflect.nativeconstructoraccessormpl.newInstance(NativeConstructorAccessorImpl.java:57)在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)上java.lang.reflect.Constructor.newInstance(Constructor.java:526)org.apache.hadoop.ipc.RemoteException.instanceeException(RemoteException.java:106)org.apache.hadoop.ipc.RemoteException.unwrapRemoteException(RemoteException.java:73)org.apache.hadoop.hdfs.dfsoutstream.newStreamForCreate(dfsoutstream.java:1604)在org.apache.hadoop.hdfs.DFSClient.create(DFSClient.java:1465)在org.apache.hadoop.hdfs.DFSClient.create(DFSClient.java:1390)在org.apache.hadoop.hdfs.DistributedFileSystem$6.doCall(DistributedFileSystem.java:394)在org.apache.hadoop.hdfs.DistributedFileSystem$6.doCall(DistributedFileSystem.java:390)上在org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)在org.apache.hadoop.hdfs.DistributedFileSystem.create(DistributedFileSystem.java:390)在org.apache.hadoop.hdfs.DistributedFileSystem.create(DistributedFileSystem.java:334)在org.apache.hadoop.fs.FileSystem.create(FileSystem.java:906)上org.apache.hadoop.fs.FileSystem.create(FileSystem.java:887)org.apache.hadoop.fs.FileSystem.create(FileSystem.java:784)org.apache.hadoop.mapreduce.lib.output.TextOutputFormat.getRecordWriter(TextOutputFormat.java:132)org.apache.hadoop.mapreduce.lib.output.MultipleOutputs.getRecordWriter(MultipleOutputs.java:475)在

我找到了它的原因。因为在我的一个reducer中,它的内存不足。因此它隐式抛出内存不足异常。hadoop停止当前的多输出。并且可能另一个reducer线程想要输出,所以它创建了另一个多输出对象,所以发生了冲突。

我找到了冲突的原因它。因为在我的一个reducer中,它的内存不足。所以它隐式抛出内存不足异常。hadoop停止当前的多个输出。可能另一个reducer线程想要输出,所以它创建了另一个多个输出对象,所以发生了冲突。

我找到了原因。因为在我的一个reducer中s、 它耗尽了内存。因此它隐式抛出了一个内存不足异常。hadoop停止了当前的多重输出。可能另一个reducer线程想要输出,所以它创建了另一个多重输出对象,所以发生了冲突。

我找到了原因。因为在我的一个reducer中,它耗尽了内存。所以我t隐式抛出内存不足异常。hadoop停止当前的多重输出。可能另一个reducer线程想要输出,因此它创建了另一个多重输出对象,因此发生了冲突