当前位置: 首页 > 知识库问答 >
问题:

Spark CSV IOException Mkdirs无法创建文件

柯甫
2023-03-14

TL;博士

Spark 1.6.1无法在没有HDFS的独立群集上使用Spark CSV 1.4写入CSV文件,IOException Mkdirs无法创建文件

更多详细信息:

我正在使用Scala使用本地文件系统(我运行的机器上甚至没有HDFS)在独立集群上运行它的Spark 1.6.1应用程序。我有这个数据框架,我试图使用HiveContext将其保存为CSV文件。

这就是我正在运行的:

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

我使用的Spark 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

完整的堆栈跟踪是:

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)

输出目录已创建,但为空。

我尝试使用spark shell运行它,我所做的是创建一个虚拟数据帧,然后使用完全相同的代码保存它(也保存到相同的路径)。它成功了。

我检查了我正在写入的文件夹的权限,并将其更改为777,但基本上在运行Spark作业时它仍然不起作用

谷歌它建议:

  • 通过删除我没有的hdfs/来更改文件前缀。我还尝试添加文件:/,文件:/,文件://前缀,但运气不佳
  • 权限问题-我试图通过创建文件夹777来解决此问题
  • 一些MacBook的问题可能与我无关,因为我在Ubuntu上工作
  • 安全问题-检查stacktrace时,我没有发现任何安全故障
  • 删除文件路径开头的/前缀-我也尝试了,但没有成功
  • 关于此问题的其他未回答问题

有人知道到底是什么问题吗?如何克服它?

提前感谢

共有1个答案

郏瀚
2023-03-14

好的所以我发现了问题我希望这能帮助其他人

显然,我运行的机器上安装了hadoop。当我运行hadoop版本时,它输出:hadoop 2.6.0-cdh5。7.1与我的Spark版本冲突

此外,我不太确定它是否相关,但我从root而不是作为Spark用户运行火花,这可能会导致一些权限问题

在将hadoop版本与我们的spark匹配(在我们的例子中,我们将spark与cloudera的spark匹配)并以spark用户的身份运行代码之后,这个失败就停止了

 类似资料:
  • 我得到这个错误,而执行maven试图修复此代码5天非解决方案工作 [ERROR]无法执行目标org.apache.maven.plugins:maven-surefire-plugin:2.19.1:项目com.learn.selenium测试(default-test):目标org.apache.maven.plugins的执行default-test:maven-surefire-plugin

  • 我编写了代码,但在构建它之后,我得到了以下内容: core-js@2.6.9 postinstall c:\users\admin\desktop\test code\angfirst\hello-world\node_modules\babel-runtime\node_modules\core-js node scripts/postinstall echo“ignore” core-js@2

  • 问题内容: 尝试从服务创建共享首选项文件时出现以下错误: “无法为SharedPreferences文件/dbdata/databases/dimappers.android.pub/shared_prefs/PubStore2.xml创建目录” 我正在使用Samsung Galaxy S I9000进行测试,并且已阅读有关此款手机问题的其他地方。但是,我发誓它在正常活动中的某些时候正常工作(尽管

  • 我的代码更长,但我没有复制所有的代码,我看到程序停在这里 对不起我的英语。

  • 我在使用PHP上传脚本时遇到了这个奇怪的问题。希望能得到别人的帮助。 以下是此问题的详细信息: 文档的根是“/var/www/html” PHP上传到名为"/var/www/html/上传"的文件夹效果很好 有另一个目录托管不同的网页在"/var/www/html/文件夹"相同的PHPupload.sh脚本不能上传文件到"/var/www/html/目录/文件夹"目录。 文件夹权限已设置为0777

  • 我尝试了多种方法来创建这个zip文件在Java /Groovy.我尝试的前几个方法,来自各种博客/帖子,导致无法打开损坏的zip文件。所以,我尝试了这个(下图),看起来相当有希望。系统报告传递到FileInputStream的有效文件路径。我不确定是否是FQ路径被传递到ZipOutputStream导致了这个问题。不管怎样,下面是代码,它导致创建小(188kb)zip文件(没有条目)。有什么建议吗