【问题标题】:How do I reference modules .egg files supplied via the --py-files option of spark-submit?如何引用通过 spark-submit 的 --py-files 选项提供的模块 .egg 文件?
【发布时间】:2017-08-19 01:29:08
【问题描述】:

我正在使用 spark-submitpy-files 选项来包含我构建的鸡蛋 (spark_submit_test_lib-0.1-py2.7.egg)。 该 .egg 的结构基本上是:

root
|- EGG-INFO
|- spark_submit_test_lib
     |- __init__.pyc
     |- __init__.py
     |- spark_submit_test_lib.pyc
     |- spark_submit_test_lib.py
         |- def do_sum()

在我的驱动程序脚本spark_submit_test.py 我有这个导入:

from spark_submit_test_lib import do_sum

我使用以下方式提交到我的 hadoop 集群:

spark-submit --queue 'myqueue' --py-files spark_submit_test_lib-0.1-py2.7.egg --deploy-mode cluster --master yarn spark_submit_test.py

失败并出现错误:

ImportError: No module named spark_submit_test_lib

我尝试将导入语句更改为

from spark_submit_test_lib.spark_submit_test_lib import do_sum

但无济于事,仍然出现同样的错误。

我看到有人遇到过类似的问题(在这种情况下,他/她希望 spark-submit 使用 .egg 中的文件作为驱动程序 - 所以类似的问题但不一样):What filepath or dot notation should I use when using spark-submit.py with .egg files as an argument to --py-files 但在写这篇文章的时候还没有答案。

【问题讨论】:

    标签: apache-spark pyspark


    【解决方案1】:

    这个命令对我有用

    spark2-submit --master yarn \
                --driver-memory 20g \
                --num-executors 50 \
                --executor-cores 1 \
                --deploy-mode client \
                --jars spark-avro_2.11-3.2.0.jar \
                --py-files spark_submit_test_lib-0.1-py2.7.egg \
                driver.py 
    

    【讨论】:

      【解决方案2】:

      我认为这是因为 --py-files 参数旨在提供将由 spark 集群上的节点使用的文件,而不是在您的驱动程序中。我相信您的驱动程序 python 程序需要是本地的。我可能错了,但这是我所经历的,也是我对您所链接问题的最终结论。

      【讨论】:

      • 好的,谢谢你过来回答。正如我上面写的那样,我实际上设法让它工作并使用from spark_submit_test_lib.spark_submit_test_lib import do_sum 做到了。在发布此线程之前尝试它时,我一定是在做其他不正确的事情-不知道是什么。无论如何,很高兴地说我现在可以正常工作了。
      猜你喜欢
      • 1970-01-01
      • 2020-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-26
      • 1970-01-01
      • 2010-10-25
      相关资源
      最近更新 更多