scala - 使用 yarn 上 spark-submit 的 --archives 选项上传 zip 文件

标签 scala apache-spark zip hadoop-yarn

我有一个包含一些模型文件的目录,由于某种原因,我的应用程序必须访问本地文件系统中的这些模型文件。

我当然知道--files spark-submit 的选项可以将文件上传到每个执行程序的工作目录并且它确实有效。

但是,我想保留文件的目录结构,所以我想出了 --archives选项,据说

YARN-only:
......
--archives ARCHIVES         Comma separated list of archives to be extracted into the working directory of each executor.
......

但是当我实际使用它上传时models.zip ,我发现 yarn 只是把它放在那里而不提取,就像它对 --files 所做的一样.是不是我误会了to be extracted或滥用此选项?

最佳答案

自己找到了答案。

YARN 确实提取了存档,但添加了一个与存档同名的额外文件夹。说清楚,如果我把models/model1models/models2models.zip ,然后我必须通过 models.zip/models/model1 访问我的模型和 models.zip/models/model2 .

此外,我们可以使用 # 语法使其更美观。

--files 和 --archives 选项支持使用类似于 Hadoop 的 # 指定文件名。例如,您可以指定:--files localtest.txt#appSees.txt,这会将您在本地命名为 localtest.txt 的文件上传到 HDFS,但这将通过名称 appSees.txt 链接到,并且您的应用程序应使用命名为 appSees.txt 以在 YARN 上运行时引用它。

编辑:

这个答案是在 spark 2.0.0 上测试过的,我不确定其他版本的行为。

关于scala - 使用 yarn 上 spark-submit 的 --archives 选项上传 zip 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41498365/

相关文章:

java - Zip/Unzip Java 实用程序的 "Jodatime"/"Apache commons"是什么?

java - 无法将新生成的 Play Framework 项目导入 IntelliJ IDEA 15

Scala 值 slf4j 不是包 org 的成员

maven-2 - 我如何找出 Apache Buildr/Maven 2 存储库名称

hadoop - Spark 作业在 Yarn 集群上运行 java.io.FileNotFoundException : File does not exits ,,即使文件存在于主节点上

apache-spark - 在 yarn 集群模式下在 yarn 上运行 Spark : Where does the console output go?

VBscript 使用 7zip 压缩日志文件

Scala 通过嵌套的 Option/Try monads 过滤

java - Spark SQL Java - 无法创建嵌套 Row 对象

android - XAPK 文件验证显示正确的数据信息