如何用多个python文件提交pyspark作业?

lmvvr0a8  于 2021-05-26  发布在  Spark
关注(0)|答案(2)|浏览(797)

我正在研究如何提交使用pycharm ide开发的pyspark作业。有4个python文件,1个python文件是pyspark job提交的主python文件,其余3个文件是在python主文件中导入的,但是我不知道我的python文件是否都在s3 bukcet中可用,spark job如何引用那些没有用pyspark submit命令提交的文件。e、 g:文件1、文件2、文件3、文件4

spark-submit --master local  --driver-memory 2g --executor-memory  2g   s3_path\file1.py

file2、file3、file4在file1中导入,但我想知道spark如何引用其他python文件。

lb3vh1jj

lb3vh1jj1#

创建包(egg文件)

使用setuptools将文件夹创建到可导入的包中。假设文件夹下有多个文件 mypackage 如下所示:

mypackage
|-- file1.py
|-- file2.py
|-- ...
`-- __init__.py

使用 setuptools 您可以创建一个egg文件(这是一种压缩版本的包)

把鸡蛋文件传给spark提交 spark-submit --pyfiles mypackage.egg <rest of the args> ####在spark应用程序中导入包的内容

from mypackage.file1 import somefunction
somefunction()

这里还有一件更重要的事情,如果你有权限/能力pip安装东西,那么就不要使用 egg 创建 wheel 文件和运行 pip install s3_path/<wheel-file> ,它将安装包并将您的可运行脚本复制到 /usr/local/bin/ 或同等的路径立即使您的生活更轻松。

hwamh0ep

hwamh0ep2#

请使用以下配置

--py-files PY_FILES         Comma-separated list of .zip, .egg, or .py files to place
                            on the PYTHONPATH for Python apps.

所以你的命令如下

spark-submit --master local  --driver-memory 2g --executor-memory  2g --py-files s3_path\file2.py,s3_path\file3.py,s3_path\file4.py  s3_path\file1.py

一个重要的注意事项是文件路径之间不要有空格

相关问题