【发布时间】:2020-08-06 17:36:04
【问题描述】:
我有一个python项目,它的文件夹有结构
main_directory - lib - lib.py
- run - script.py
script.py 是
from lib.lib import add_two
spark = SparkSession \
.builder \
.master('yarn') \
.appName('script') \
.getOrCreate()
print(add_two(1,2))
而lib.py 是
def add_two(x,y):
return x+y
我想在 GCP 中作为 Dataproc 作业启动。我在网上查过,但我不太明白怎么做。我正在尝试使用
启动脚本gcloud dataproc jobs submit pyspark --cluster=$CLUSTER_NAME --region=$REGION \
run/script.py
但我收到以下错误消息:
from lib.lib import add_two
ModuleNotFoundError: No module named 'lib.lib'
您能否帮助我了解如何在 Dataproc 上启动这项工作?我发现这样做的唯一方法是删除绝对路径,将此更改为script.py:
from lib import add_two
并以
的身份启动作业gcloud dataproc jobs submit pyspark --cluster=$CLUSTER_NAME --region=$REGION \
--files /lib/lib.py \
/run/script.py
但是,我想避免每次手动列出文件的繁琐过程。
按照@Igor 的建议,打包成一个zip 文件,我发现
zip -j --update -r libpack.zip /projectfolder/* && spark-submit --py-files libpack.zip /projectfolder/run/script.py
有效。但是,这会将所有文件放在 libpack.zip 中的同一个根文件夹中,因此如果子文件夹中有同名文件,这将不起作用。
有什么建议吗?
【问题讨论】:
标签: python pyspark google-cloud-dataproc