You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Docker运行简单PySpark脚本失败,寻求问题排查帮助

问题分析与解决方案

核心错误原因

  1. 权限问题:apache/spark-py:v3.3.0官方镜像默认以非root的spark用户执行命令,apt-get update需要修改系统级目录,普通用户无权限操作,因此出现锁文件无法打开的报错。
  2. 冗余操作:该镜像已经预装了Python 3和对应版本的PySpark,完全不需要额外执行apt-get install python3或pip3 install pyspark命令。

修正后的Dockerfile

FROM apache/spark-py:v3.3.0
COPY test.py /opt/spark/work-dir/test.py
WORKDIR /opt/spark/work-dir
CMD ["spark-submit", "test.py"]

关键调整说明

  • 指定工作目录:将脚本放到Spark默认的工作目录/opt/spark/work-dir,避免非root用户的文件权限问题。
  • 使用spark-submit执行:Spark脚本必须通过spark-submit提交,而非直接用python3运行,这能确保Spark环境正确初始化,加载必要的依赖与配置。
  • 移除冗余安装步骤:删除所有apt-get和pip相关命令,直接复用镜像自带的完整Spark-Python环境。

运行验证

执行原构建与运行命令即可:

docker build -t ch_image --rm . && docker run --rm --name ch_container ch_image

运行成功后,容器内的/opt/spark/work-dir/test目录会生成CSV文件(对应你代码中指定的输出路径)。如果需要将结果导出到宿主机,可添加目录挂载参数:

docker run --rm --name ch_container -v $(pwd)/output:/opt/spark/work-dir/test ch_image

宿主机当前目录下的output文件夹会自动同步生成的CSV文件。

补充说明

你之前尝试的/opt/spark/bin/pyspark是Spark的交互式Python Shell,并非用于提交批处理脚本的工具,提交作业请始终使用spark-submit。

内容的提问来源于stack exchange,提问作者AK91

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 19:15:51