即使输出目录不存在,也会在 saveAsTextFile 时触发 FileAlreadyExistsException

Spark `FileAlreadyExistsException` when `saveAsTextFile` even though the output directory doesn't exist

我是运行这个命令行:

hadoop fs -rm -r /tmp/output

然后 Java8 spark 作业与此 main()

    SparkConf sparkConf = new SparkConf();
    JavaSparkContext sc = new JavaSparkContext(sparkConf);
    JavaRDD<JSONObject> rdd = sc.textFile("/tmp/input")
            .map (s -> new JSONObject(s))
    rdd.saveAsTextFile("/tmp/output");
    sc.stop();

我收到这个错误:

ERROR ApplicationMaster: User class threw exception: org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory /tmp/output already exists

知道如何解决吗?

您删除了 HDFS 目录,但 Spark 尝试保存在本地文件系统中。

要保存在 hdfs 中,试试这个:

rdd.saveAsTextFile("hdfs://<URL-hdfs>:<PORT-hdfs>/tmp/output");

localhost 的默认值是:

rdd.saveAsTextFile("hdfs://localhost:9000/tmp/output");

其他解决方案是从您的本地文件系统中删除 /tmp/output

此致