MapReduce - 有没有办法通过CustomOutputFormat类覆盖输出目录?

时间:2015-09-08 11:10:56

标签: hadoop mapreduce

我想覆盖mapreduce中的输出目录,但它会抛出异常“FileAlreadyExists”。有没有办法通过创建自定义输出类来覆盖输出目录?

2 个答案:

答案 0 :(得分:0)

MapReduce的输出文件将在HDFS中。 HDFS运行一次写入和多次读取的概念。所以你不能覆盖输出目录。您必须删除它并通过MapReduce再次写入

答案 1 :(得分:0)

最简单的方法是检查输出目录是否存在。如果确实删除了所有内容。

为此,请在驱动程序类中使用[FileSystem][1]类。

    Path outputPath = new Path("/user/foor/jobOutput");
    Job job = new Job();


    FileSystem fs = FileSystem.get(outputPath.toUri(),job.getConfiguration());
    fs.delete(outputPath, true);


    FileOutputFormat.setOutputPath(job, outputPath);