Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 具有多个输出的FileReadyExistsException_Java_Hadoop_Mapreduce - Fatal编程技术网

Java 具有多个输出的FileReadyExistsException

Java 具有多个输出的FileReadyExistsException,java,hadoop,mapreduce,Java,Hadoop,Mapreduce,我在Ubuntu 14.04上使用Hadoop 2.5.1 现在我尝试使用MultipleOutputs类。作业可以在小数据(如8行输入)上正常运行。但是,当我尝试运行1000多行数据时(我认为这不是所谓的大数据,而是大于8行),任务失败,抛出异常 org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.fs.FileAlreadyExistsException): /out/_temporary/1/_temporary/attempt_

我在Ubuntu 14.04上使用Hadoop 2.5.1

现在我尝试使用MultipleOutputs类。作业可以在小数据(如8行输入)上正常运行。但是,当我尝试运行1000多行数据时(我认为这不是所谓的大数据,而是大于8行),任务失败,抛出异常

org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.fs.FileAlreadyExistsException): /out/_temporary/1/_temporary/attempt_1430139159731_0055_m_000000_0/MYFOLDERNAME-m-00000 for client MY_MASTER/SLAVE_IP already exists
我正在运行2个节点的完全分布式模式

在运行作业之前,我还仔细检查了hdfs,确认那里没有文件


请提供任何建议。

我相信您正在reduce方法中初始化multipleoutput。对于较小的输入,reduce方法只调用一次,因此您不会遇到这个问题。当使用不同的键在同一任务中多次调用reduce方法时,多个输出会被多次初始化,从而产生错误

尝试在configure()方法中初始化MultipleOutput


还要尝试注释掉combiner类

谢谢你的回复,先生。我正在做类似的事情,并在reduce方法中使用mos.write()。我该怎么做才能解决这个问题?@spacez,看起来不错。你能粘贴驱动程序类和减速器代码吗?这是驱动程序和减速器。很抱歉,由于某些原因,我无法全部显示它们,而且reducer方法很长,但我在这一部分调用了write()。谢谢没有明显的原因。你能试着注释合并器类吗?删除合并器类会得到一些结果。对于较小的数据,我可以正常运行。对于较大的数据,后一个作业(第三个作业)抛出异常filenotfound。在深入研究这个问题之后,我发现我用于ReadFile的文件夹名(第二个作业的MultiOutput的输出)是xxxx-m-00000。但在第二份工作中对减速机进行了评论之后,没有xxxx-m-00000了,只有-r-00000(有一些不同,如果可能的话,我更喜欢-m-00000)。还有其他办法解决这个问题吗?或者我只需要使用-m-00000。提前谢谢。