java - Spark `FileAlreadyExistsException` when `saveAsTextFile` 即使输出目录不存在

标签 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

知道如何解决吗?

最佳答案

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

要保存在 hdfs 中试试这个:

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

localhost 的默认值是:

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

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

最好的问候

关于java - Spark `FileAlreadyExistsException` when `saveAsTextFile` 即使输出目录不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35407107/

相关文章:

java - org.json.simple.JSONObject 未找到

java - 使用递归和子字符串方法向后显示字符串

java - hadoop的mapreduce中的详细数据流?

java - Hadoop Mapreduce:Reducer的值是相反的顺序

python - 将 Spark Dataframe 中的 float 列转换为 VectorUDT

java - 在 JavaFX 网格中插入行时如何纠正显示问题?

java - 有条件地转换为小写

java - Hadoop 独立模式给出连接错误

apache-spark - Spark Sql JDBC 支持

apache-spark - 将数据帧记录保存在制表符分隔的文件中