【问题标题】:Upload zip file using --archives option of spark-submit on yarn在纱线上使用 spark-submit 的 --archives 选项上传 zip 文件
【发布时间】:2017-05-20 18:47:49
【问题描述】:

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

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

但是,我想保留文件的目录结构,所以我想出了--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 或误用了这个选项?

【问题讨论】:

    标签: scala apache-spark zip hadoop-yarn


    【解决方案1】:

    自己找到了答案。

    YARN 确实会提取档案,但会添加一个与档案同名的额外文件夹。说清楚一点,如果我把models/model1models/models2 放在models.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 上测试过,我不确定其他版本的行为。

    【讨论】:

    • 这简直就是救命稻草。它在任何地方都有记录吗?!
    • 很高兴它有帮助。我没有找到关于这个的文档,我认为这应该出现在spark-submit -h
    • 这也救了我。关于stackoverflow的最佳答案。顺便说一句,据我所知,它没有提取文件,除非我添加了 # 和别名。也许是火花的版本或奇怪的东西。但我建议为遇到此问题的任何人添加 # 别名。
    • 有什么方法可以在不添加#的情况下提取zip?
    • 嗨@MoTao - 我有类似的问题。我有 spark-submit 命令,例如 'spark-submit --master yarn-client --driver-memory 4g --py-files /home/valli/pyFiles.zip --archives /home/valli/sql.zip#sqls / home/valli/main.py --sqls-path /home/valli/sqls'。但是当我尝试访问 zip 文件夹中的 sql 文件时,仍然出现“FileNotFound”异常。请帮助我。提前致谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-29
    • 2018-10-29
    • 1970-01-01
    • 2016-04-18
    • 2010-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多