spark-submit 使用 --py-files 选项找不到模块路径

问题描述 投票:0回答:1

我正在尝试在 EMR 集群中提交 pyspark 作业。作业代码位于放置在 S3 中的压缩包中:

/bin/spark-submit \
  --py-files s3://my-dev/scripts/job-launchers/dev/pipeline.zip \
  pipeline.job_1.job_1.py -h 

这是我的 pipeline.zip 结构

$ unzip -L pipeline.zip 
Archive:  pipeline.zip
 extracting: pipeline/__init__.py     
   creating: pipeline/common/
  inflating: pipeline/common/__init__.py  
  inflating: pipeline/common/error_message.py  
   creating: pipeline/job_1/
  inflating: pipeline/job_1/__init__.py  
  inflating: pipeline/job_1/job_1.py  
   creating: pipeline/job_2/
  inflating: pipeline/job_2/__init__.py  
  inflating: pipeline/job_2/job_2.py

然后将压缩包放入

s3://my-dev/scripts/job-launchers/dev/

$ aws s3 ls s3://my-dev/scripts/job-launchers/dev/pipeline.zip
2024-10-11 17:54:28      13219 pipeline.zip

提交作业后,我收到错误:

/usr/bin/python3:无法打开文件 '/home/hadoop/pipeline.job_1.job_1.py': [Errno 2] 没有这样的文件或 目录

zip 文件似乎没有放置在 PYTHONPATH 中。任何故障排除指示都会有很大帮助。

amazon-web-services apache-spark amazon-s3 pyspark amazon-emr
1个回答
0
投票

我认为在 zip 文件中包含所需的依赖项是更常见的,那么你可以将主要的 python 文件放在 zip 之外并像这样调用它

spark-submit --deploy-mode cluster --master yarn --py-files s3://my-dev/scripts/job-launchers/dev/pipeline.zip s3://my-dev/scripts/job-launchers/dev/job.py
© www.soinside.com 2019 - 2024. All rights reserved.