Spark-Application 到本地目录

Posted

技术标签:

【中文标题】Spark-Application 到本地目录【英文标题】:Spark-Application to Local Directory 【发布时间】:2017-09-25 05:28:55 【问题描述】:

问题

由于无法创建 Mkdirs 而导致 Spark 应用程序错误。 我正在使用 spark 1.6.3 无法将输出保存到我​​的本地目录

java.io.IOException: Mkdirs failed to create file:/home/zooms/output/sample1/sample1.txt/_temporary/0/_temporary/attempt_201709251225_0005_m_000000_10
 (exists=false, cwd=file:/grid/1/hadoop/yarn/local/usercache/zooms/appcache/application_1504506749061_0086/container_e01_1504506749061_0086_01_000003)

更新日志

17/09/25 13:39:02 WARN TaskSetManager: Lost task 0.0 in stage 5.0 (TID 10, worker3.hdp.example.com): java.io.IOException: Mkdirs failed to create file:/home/zooms/output/sample1/sample1.txt/_temporary/0/_temporary/attempt_201709251339_0005_m_000000_10 (exists=false, cwd=file:/grid/1/hadoop/yarn/local/usercache/zooms/appcache/application_1504506749061_0099/container_e01_1504506749061_0099_01_000003)
    at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:456)
    at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:442)
    at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:930)
    at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:823)
    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:1191)
    at org.apache.spark.rdd.PairRDDFunctions$$anonfun$saveAsHadoopDataset$1$$anonfun$13.apply(PairRDDFunctions.scala:1183)
    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:227)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

代码:

val output = "file:///home/zooms/output/sample1/sample1.txt" 
result.coalesce(1).saveAsTextFile(output)

解决方案

确保整个集群都可以访问本地或特定目录。 就我而言,集群或火花执行器无权访问特定目录。

【问题讨论】:

您能否提供更多错误日志和引发该错误的代码行? @RameshMaharjan 添加了更新日志 也许您没有写入该文件夹的权限? 我已经将缩放(用户帐户)添加到 hdfs 组 没有您的代码很难提供帮助。你能分享你保存输出的代码吗? 【参考方案1】:

这是我的问题的答案。 由于我在集群模式或客户端模式下运行,除非您定义它,否则工作人员将无法在每个节点上创建目录。采用 spark-submit -v --master local ...

参考资料: Writing files to local system with Spark in Cluster mode

Why does Spark job fails to write output?

【讨论】:

以上是关于Spark-Application 到本地目录的主要内容,如果未能解决你的问题,请参考以下文章

华为AP3010DN-AGN升级到FAT AP和Web网管配置 操作指南

胖AP(V2R10版本)配置本地用户的内置Portal认证示例(Web)DHCP方式入网

debian搭建本地镜像源

git将本地项目初始化提交到远程仓库

facebook 原生 ap 没有在 iOS 的 fb 登录中启动?

无线设备AP和AC