Apache spark:上传到作业暂存目录的文件的权限被拒绝

Posted

技术标签:

【中文标题】Apache spark:上传到作业暂存目录的文件的权限被拒绝【英文标题】:Apache spark: permission denied for files uploaded to job's staging directory 【发布时间】:2015-07-31 14:09:19 【问题描述】:

我编写了一个使用一些配置文件的 apache spark 作业。当我在本地运行此作业时,它工作正常。但是当我将此作业提交到 YARN 集群时,它会失败并显示 java.io.FileNotFoundException: (Permission denied)

我使用以下命令提交我的工作:

bin/spark-submit --master yarn --deploy-mode cluster --num-executors 1 --files /home/user/app.conf --class org.myorg.PropTest assembly.jar

它将 assembly.jar 和 app.conf 文件上传到我在 HDFS 上的主目录中的 .sparkStaging 目录的子目录中。

我正在尝试访问以下行中的app.conf 文件:

ConfigFactory.parseFile(new File("app.conf"))

当我上传一个名称不是 app.conf 的文件时,它按预期失败并出现 FileNotFoundException。

但是,当我上传 app.conf 时,它也会失败并出现 FileNotFoundException,但会显示 ./app.conf 权限被拒绝的消息。因此,它似乎可以访问该文件,但无法获得所需的权限。

有什么问题?

【问题讨论】:

【参考方案1】:

好的,我想通了。上传的文件被添加到驱动程序的类路径中,因此可以作为资源访问:

val config = ConfigFactory.parseResources("app.conf")

【讨论】:

以上是关于Apache spark:上传到作业暂存目录的文件的权限被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

git 陷阱小记

从 Apache Spark 分段上传到 Amazon S3

图解Git命令

Apache Spark 无法读取使用流式作业编写的 parquet 文件夹

Apache Spark:从IDE远程运行作业时的无限循环

apache spark中的无效类异常