【问题标题】:No module error when running spark-submit运行 spark-submit 时没有模块错误
【发布时间】:2021-01-28 01:12:22
【问题描述】:

我正在提交一个依赖于要运行的自定义模块的 python 文件。我要提交的文件位于 project/main.py,我们的模块位于 project/modules/module1.py。我在客户端模式下提交到 Yarn 并收到以下错误。

ModuleNotFoundError: No module named 'modules.module1'

main.py中的import语句:

from modules import module1.py

我已尝试压缩模块文件夹并将其传递给 --py-files:

spark-submit --master yarn --queue OurQueue --py-files hdfs://HOST/path/to/modules.zip
--conf "spark.pyspark.driver.python=/hadoop/anaconda3.6/bin/python3"
--conf "spark.pyspark.python=/hadoop/anaconda3.6/bin/python3"
main.py

【问题讨论】:

    标签: python apache-spark pyspark hadoop-yarn


    【解决方案1】:

    假设你有一个压缩文件

    zip -r modules
    

    我认为您缺少将此文件附加到火花上下文,您可以在脚本中使用 addPyFile() 函数作为

      sc.addPyFile("modules.zip")
    

    另外,不要忘记在你的目录(modules.zip)的根目录中创建空的__init__.py文件,比如modules/__init__.py

    现在要导入,我认为您可以将其导入为

     from modules.module1 import *
    

     from modules.module1 import module1
    

    已更新,现在运行 spark-submit 命令

    spark-submit --master yarn --queue OurQueue --py-files modules.zip
    --conf "spark.pyspark.driver.python=/hadoop/anaconda3.6/bin/python3"
    --conf "spark.pyspark.python=/hadoop/anaconda3.6/bin/python3"
    main.py
    

    【讨论】:

    • 我刚刚添加了 sc.addPyFile,但我仍然遇到同样的错误。 init.py 文件在那里。
    • 我描述的是 init 还是 __init__.py
    • 如你所述,是__init__.py
    • 你能显示module1文件的内容吗?现在错误也改变了吗?
    • 我已经编辑了导入文件,你可以试试,让我知道module1.py中是否有任何名为module1的有效函数/对象? (我还更新了 spark-submit 命令并删除了 hdfs 路径)
    猜你喜欢
    • 1970-01-01
    • 2020-04-07
    • 2021-02-13
    • 2016-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-30
    • 1970-01-01
    相关资源
    最近更新 更多