Spark-Submit提交时GCS源码ZIP无法复制到Dataproc集群
GCP Dataproc 提交PySpark作业无法加载ZIP源码包修复方案
核心问题定位
作业抛出ModuleNotFoundError: No module named 'src'的根本原因有两个:
- 提交命令存在语法错误:
--jars、--archives等参数行末尾缺少续行反斜杠\,导致后续参数全部被截断,根本没有传递给gcloud命令,不管是传archives还是传shell脚本逻辑都没生效 - 参数用法完全错误:
--archives、--files参数只会把文件分发到节点工作目录,不会自动将路径加入Python模块搜索路径PYTHONPATH,就算参数传对了也识别不到src模块--分隔符后的内容是直接传给PySpark主程序的命令行参数,不是要在节点上执行的shell命令,你写的gsutil复制、解压逻辑从来没有被执行过- 命令里重复写了两次
--,后面的作业参数也会传参异常
前置校验
先确认你的pyfiles.zip打包结构正确:压缩包打开后根目录直接是src文件夹,不存在额外的外层嵌套目录(比如不要把外层的pyfiles文件夹一起压缩,导致打开压缩包先看到pyfiles文件夹、点进去才看到src,这种结构Python解释器识别不了)。
修复方案(二选一即可)
方案1:用--py-files传依赖(最简便,推荐)
Spark原生支持--py-files参数直接传递Python依赖(支持.zip/.egg/.py格式),会自动把依赖分发到所有driver和executor节点,并且自动加入PYTHONPATH,不需要手动解压。
修复后的可直接运行命令:
gcloud dataproc jobs submit pyspark gs://gcs-bucket/spark-submit/main_file.py \ --project XYZ-data \ --cluster=ABC-v1 \ --region=us-central1 \ --jars gs://qc-dmart/tmp/gcs-connector-hadoop3-2.2.2-shaded.jar,gs://qc-dmart/tmp/spark-bigquery-with-dependencies_2.12-0.24.2.jar \ --py-files gs://gcs-bucket/spark-submit/src/pyfiles.zip \ -- --config-path=../configs env=dev
注意:每一行末尾的续行反斜杠
\不能遗漏,否则后面的参数会被命令行截断,完全不生效。
方案2:手动加载依赖(适合有自定义解压/配置需求的场景)
如果需要自定义依赖拉取、解压逻辑,不要把shell命令写在提交参数里,直接在主Python文件最顶部(所有src相关导入语句之前)加如下代码:
import os import sys import subprocess # 手动拉取并解压源码包 subprocess.run( ["gsutil", "cp", "gs://gcs-bucket/spark-submit/src/pyfiles.zip", "."], check=True ) subprocess.run(["unzip", "-n", "pyfiles.zip"], check=True) # 把当前工作目录加入Python模块搜索路径 sys.path.append(os.getcwd())
提交命令去掉无效的shell参数段即可:
gcloud dataproc jobs submit pyspark gs://gcs-bucket/spark-submit/main_file.py \ --project XYZ-data \ --cluster=ABC-v1 \ --region=us-central1 \ --jars gs://qc-dmart/tmp/gcs-connector-hadoop3-2.2.2-shaded.jar,gs://qc-dmart/tmp/spark-bigquery-with-dependencies_2.12-0.24.2.jar \ -- --config-path=../configs env=dev
之前尝试无效的原因
- 单独使用
--archives/--files:一方面命令缺续行符导致参数没传进去,另一方面就算传对了,这两个参数不会自动配置PYTHONPATH,Python解释器还是找不到src模块 - 在
--后写gsutil命令:这部分内容会被当做命令行参数传给main_file.py,不会被shell执行,解压逻辑根本没跑
内容的提问来源于stack exchange,提问作者Jack Daniel
相关产品推荐
相关产品推荐

