运行 spark-submit 时没有模块错误

No module error when running spark-submit

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

ModuleNotFoundError: No module named 'modules.module1'

main.py中的导入语句:

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

假设您有一个压缩文件

zip -r modules

我认为您缺少将此文件附加到 spark 上下文的方法,您可以在脚本中使用 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