使用--archives选项上传zip文件上传zip文件

Mo *_*Tao 7 zip scala hadoop-yarn apache-spark

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

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

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

YARN-only:
......
--archives ARCHIVES         Comma separated list of archives to be extracted into the working directory of each executor.
......
Run Code Online (Sandbox Code Playgroud)

但是当我实际使用它上传时models.zip,我发现纱线只是放在那里没有提取,就像它做的那样--files.我误解to be extracted或误用了这个选项吗?

Mo *_*Tao 25

我自己找到了答案.

YARN确实提取了存档,但添加了一个与存档名称相同的额外文件夹.要清楚,如果我把models/model1models/models2models.zip,那我也通过访问我的模型models.zip/models/model1models.zip/models/model2.

而且,我们可以使用#语法使它更漂亮.

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

编辑:

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