即使输出目录不存在,当`saveAsTextFile`时,Spark`FileAlreadyExistsException`

时间:2016-02-15 10:38:20

标签: java hadoop apache-spark hdfs

我正在运行此命令行:

hadoop fs -rm -r /tmp/output

然后使用此main()

进行Java8 spark工作
    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

知道怎么解决吗?

1 个答案:

答案 0 :(得分:0)

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

要保存在hdfs中,请尝试:

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

localhost的默认值为:

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

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

祝你好运