2016-06-14 1 views
3

TL; DRСпарк CSV IOException Mkdirs не удалось создать файл

Спарк 1.6.1 не удается записать файл CSV с помощью искровой CSV 1.4 на отдельном кластере, без HDFS с IOException Mkdirs не удалось создать файл

Подробнее:

Я работаю над приложением Spark 1.6.1, которое запускает его на автономном кластере, используя локальную файловую систему (на машине, на которой я работаю, даже нет HDFS) с Scala. У меня есть этот фреймворк, который я пытаюсь сохранить как файл CSV с помощью HiveContext.

Это то, что я бегу:

exportData.write 
     .mode(SaveMode.Overwrite) 
     .format("com.databricks.spark.csv") 
     .option("delimiter", ",") 
     .save("/some/path/here") // no hdfs:/ or file:/ prefix in the path 

Искра CSV, что я использую 1,4. При выполнении этого кода я получаю следующее исключение:

WARN TaskSetManager:70 - Lost task 4.3 in stage 10.0: java.io.IOException: Mkdirs failed to create file: /some/path/here/_temporary/0 

Полный StackTrace является:

at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:442) 
     at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:428) 
     at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:908) 
     at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:801) 
     at org.apache.hadoop.mapred.TextOutputFormat.getRecordWriter(TextOutputFormat.java:123) 
     at org.apache.spark.SparkHadoopWriter.open(SparkHadoopWriter.scala:91) 
     at org.apache.spark.rdd.PairRDDFunctions$$anonfun$saveAsHadoopDataset$1$$anonfun$13.apply(PairRDDFunctions.scala:1193) 
     at org.apache.spark.rdd.PairRDDFunctions$$anonfun$saveAsHadoopDataset$1$$anonfun$13.apply(PairRDDFunctions.scala:1185) 
     at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:66) 
     at org.apache.spark.scheduler.Task.run(Task.scala:89) 
     at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:214) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
     at java.lang.Thread.run(Thread.java:745) 

Выход реж действительно становится создан, но его пустым.

Я попытался запустить его, используя искровую оболочку, то, что я сделал, это создать фиктивный фреймворк, а затем сохранить его, используя тот же самый код для сохранения (также на тот же путь). Это удалось.

Я проверил права доступа к папке, которую я пишу, чтобы и изменил его на 777, но в основном это все еще не работает при выполнении задания Спарк

погуглить он предложил:

  • изменяя префикс файла, удалив hdfs: /, которого у меня нет. Я также попытался добавить файл: /, file: //, file: /// префикс без удачи
  • права доступа - я попытался решить эту проблему, установив папку 777
  • проблема с MacBook, которая, вероятно, не имеет отношения ко мне так как я работаю над Ubuntu
  • проблемы с безопасностью - осмотрев мой стек, я не смог найти никакого сбоя безопасности.
  • удаления/префикс в начале моего пути к файлу - Я попробовал это, а не повезло
  • другие безответных вопросы, касающиеся этой проблемы

ли кто-нибудь имеет ни малейшего представления о том, что именно проблема? И как его преодолеть?

Заранее спасибо

ответ

0

Ok, так что я нашел эту проблему, и я надеюсь, что это поможет другим

Видимо машина я бегу на Hadoop установил на нем. Когда я запустил hadoop version, он вывел: Hadoop 2.6.0-cdh5.7.1, который конфликтует с моей Спарк версии

Кроме того, я не совсем уверен, если связанные с ним или нет, но я бег искры от корня, а не как пользователь Спарк, который, возможно, вызвал некоторое разрешение выдает

После согласования версия hadoop для нашей искры (в нашем случае мы сопоставили Spark как Clarka's Spark) и запускали код как пользователь Spark, этот отказ прекратился.

+0

, пожалуйста, объясните, как вы исправили вышеуказанную проблему. Сама проблема с тем же вопросом – developer

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