我在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方法中的MultipleOutputs。在小输入的情况下,reduce方法仅被调用一次,因此您不会遇到此问题。当在同一任务中使用不同的键多次调用reduce方法时,多个输出将多次初始化,从而产生错误。

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

还尝试注释掉组合器类。

关于java - 带有MultipleOutputs的FileAlreadyExistsException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29901924/

10-10 04:59