我一定是做了一个错误的假设,因为我没有找到解决这个问题的方法。我想提交一个.egg文件,应该是: spark-submit --py-files mypkg.egg main.py argv1 argv2
,只需要.egg文件。但当我执行这个时,我得到:
python: can't open file 'C:/Users/israel/Desktop/spark_python_maven/main.py': [Errno 2] No such file or directory
研究之后,我设置了一个文件夹结构,一个init.py文件,并将path/to/main.py添加到spark submit中,然后错误变为:
File "C:/Users/israel/Desktop/spark_python_maven/src/mypkg/main.py", line 3, in <module>
from src.mypkg.data_layer import *
ModuleNotFoundError: No module named 'src'
我找到的唯一方法是删除init.py并将路径设置为main.py和其他.py文件,所以当我希望只需要.egg文件时,我需要.egg和.py文件。
我的主要目标是:
import os
import sys
from src.mypkg.data_layer import *
from pyspark.sql import SparkSession
if __name__ == "__main__" :
print("hello world!")
我的setup.py看起来像:
from setuptools import setup, find_packages
setup(
name='mypkg',
version='0.1',
packages = find_packages('src'), # include all packages under src
package_dir = {'':'src'} # tell distutils packages are under src
)
我的init.py看起来像:
from src.mypkg import *
from .mypkg import *
我的项目结构如下所示:
其中setup.py与src处于同一级别,init.py与mypkg处于同一级别。
我要做的是创建一个.egg文件,它包含了我所需要的所有东西,可以通过argvs进行提交。我做错什么了?
提前谢谢。
暂无答案!
目前还没有任何答案,快来回答吧!