2016-02-15 5 views
1

Я бег этой командной строки:Спарка `FileAlreadyExistsException` когда` saveAsTextFile` даже если выходной каталог не существует

hadoop fs -rm -r /tmp/output 

а затем Java8 искровой работы с этим 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 

Любая идея, как ее исправить?

+0

I использовали следующую команду в SparkConf, и она отлично работает 'yourSpark Conf.set ("spark.hadoop.validateOutputSpecs", "false") ' – ypriverol

ответ

1

Вы удаляете каталог HDFS, но Spark пытается сохранить в локальной файловой системе.

Чтобы сохранить в HDFS попробовать это:

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

по умолчанию для локального хоста является:

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

Другое решение удалить /tmp/output из локальной файловой системы

С наилучшими пожеланиями

Смежные вопросы