无法向Docker Compose部署的Spark集群提交PySpark应用求助
问题原因
你的Spark集群运行在Docker容器(Linux环境)中,但提交作业时传递了本地Windows系统的Python路径C:\Program Files\Python310\python.exe——这个路径在Linux容器内完全不存在,导致Worker节点无法找到Python解释器。
解决方案
1. 提交作业时指定容器内的Python路径
如果你的Spark Docker镜像已预装Python,直接在提交命令中明确容器内的Python路径(通常是/usr/bin/python3,可根据镜像实际情况调整):
spark-submit --master spark://<你的SparkMasterIP>:7077 --conf spark.pyspark.python=/usr/bin/python3 your_pyspark_script.py
也可以在Docker Compose配置中全局设置环境变量,让所有节点统一使用容器内的Python:
services: spark-master: environment: - SPARK_PYSPARK_PYTHON=/usr/bin/python3 - SPARK_PYSPARK_DRIVER_PYTHON=/usr/bin/python3 spark-worker: environment: - SPARK_PYSPARK_PYTHON=/usr/bin/python3 - SPARK_PYSPARK_DRIVER_PYTHON=/usr/bin/python3
2. 确保Spark镜像包含Python环境
如果使用的基础Spark镜像未预装Python,需自定义镜像或选择带Python的Spark镜像(如bitnami/spark)。自定义Dockerfile示例:
FROM apache/spark:3.5.0 RUN apt-get update && apt-get install -y python3 python3-pip RUN pip install pyspark
构建镜像后,替换Docker Compose中Spark服务的image字段为自定义镜像名。
3. 清理本地环境变量干扰
检查本地是否设置了PYSPARK_PYTHON环境变量指向Windows的Python路径,提交作业前临时取消该变量,避免其被传递到集群节点。
内容的提问来源于stack exchange,提问作者Nguyễn Quốc Nhật Minh
相关产品推荐
相关产品推荐

