我有一个包含一些模型文件的目录,由于某种原因,我的应用程序必须访问本地文件系统中的这些模型文件。
我当然知道--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/model1
和 models/models2
在 models.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/