hadoop多输出到绝对路径,但是其他尝试已经创建了文件



i使用多重输出将数据输出到某些绝对路径,而不是相对于输出路径的路径。

然后,我得到错误:

错误:org.apache.hadoop.ipc.remoteexception(org.apache.hadoop.hdfs.protocol.aldreybeingcreatedexception):无法创建文件[/TEST/convert.bak/326/326/201501505110030/326-M--00035]对于客户[192.168.7.146] 1]在[192.168.7.149] at org.apache.hadoop.hdfs.server.nemenode.fsnamesystem.recoverleaseinternal(fsnamesystem.java:2320)atorg.apache.hadoop.hdfs.server.nemenode.fsnamesystem.startfileinternal(fsnamesystem.java:2083)2012)atrg.apache.hadoop.hdfs.server.namenode.fsnamesystem.startfile(fsnamesystem.java:1963)at

https://issues.apache.org/jira/browse/mapreduce-6357

输出文件必须在$ {mapred.output.dir}。

设计和实现不支持将数据输出到$ {mapred.output.dir}的文件。

通过查看堆栈跟踪错误,似乎已经创建了输出文件。

如果要将数据写入多个文件,请尝试动态生成这些文件名并使用这些文件名,如从Hadoop Difentive指南中获取的代码中所示

String basePath = String.format("%s/%s/part", parser.getStationId(), parser.getYear());
multipleOutputs.write(NullWritable.get(), value, basePath);

我希望这会有所帮助。

清楚地表明您要创建的路径已经存在。因此,在创建该路径之前,请尝试进行检查,无论是否存在该路径。如果存在,则删除该路径。

    FileSystem hdfs;
    Path path = new Path (YourHadoopPath);
    if (hdfs.exists(path)) {
        hdfs.delete(path);
    }

相关内容

  • 没有找到相关文章

最新更新