我想覆盖mapreduce中的输出目录,但它抛出异常为"FileAlreadyExists"。是否有办法通过创建自定义输出类来覆盖输出目录?
最简单的方法是检查输出目录是否存在。如果它删除它的所有内容。
要做到这一点,在驱动程序类中使用[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);
MapReduce的输出文件将在HDFS中。HDFS的运行理念是写一次,读多次。因此,您不能覆盖输出目录。你必须删除它,然后通过MapReduce重新写入