我遇到麻烦,因为每个工人似乎都找不到我的项目包。对于每个工作人员,我收到错误No module named 'subpackage'
我有以下项目结构:
.
├── myproject
├── mainpackage
├── subpackage
├── __init__.py
└── moduleA
├── __init__.py
└── __main__.py
└── dist
└── myproject-1.0.egg
├── README
├── setup.py
└── ...
主要逻辑显然包含在__main__.py
中。所有这个项目结构都被打包到myproject-1.0.egg
egg文件中。
我想将此模块作为spark工作提交。为此,我触发以下命令:
$ spark-submit \
--num-executors 10 \
--executor-cores 4 \
--conf spark.executorEnv.PYSPARK_PYTHON=/usr/bin/python \
--conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=/usr/bin/python \
--py-files /absolutepath/myproject/dist/myproject-1.0.egg \
mainpackage/__main__.py \
__main.py__.py
中最相关的部分是:
from subpackage.moduleA import ClassA
from pyspark import SparkContext
from pyspark import SQLContext
if __name__ == "__main__":
...
sc = SparkContext.getOrCreate()
sc.addPyFile('dist/myproject-1.0.egg')
spark = SQLContext(sc)
...
如果证明不够,我可能会提供更多信息或代码。我对代码&项目结构改进。