具有多个输出的 FileAlreadyExistsException

FileAlreadyExistsException with MultipleOutputs

我在 Ubuntu 14.04

上使用 Hadoop 2.5.1

现在我正在尝试使用 MultipleOutputs class。这些作业可以 运行 正确处理小数据,如 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。

也尝试注释掉组合器 class。