You need to enable JavaScript to run this app. PySpark提交zip格式py-files时报java.io.FileNotFoundException错误
优惠活动
大模型
产品
解决方案
定价
更多

PySpark提交zip格式py-files时报java.io.FileNotFoundException错误

问题根因

你遇到的报错核心是Spark对带查询参数的HTTP资源链接做了自动URL编码,导致请求的资源地址无效:

  • 从异常栈可以看到实际Spark请求的地址为https://github.com/LorenzWackenhut/py-files-public/blob/main/jobs.zip%3Fraw=true,你原本传入的查询参数标识?被编码为%3F,GitHub无法识别该格式的请求,返回404错误,Spark因此抛出FileNotFoundException。
  • Spark的--py-files、--files参数处理HTTP链接时,默认会将链接中所有非路径标准字符做转义,查询参数的?、&等符号都会被编码,导致原始请求失效。

解决办法

方案1:改用GitHub raw直链(推荐)

GitHub的静态资源支持不带查询参数的raw域名直链,格式为https://raw.githubusercontent.com/用户名/仓库名/分支名/文件路径,替换你提交命令中的--py-files参数值即可,不需要携带?raw=true后缀:

# 替换后的提交命令对应行
--py-files "https://raw.githubusercontent.com/LorenzWackenhut/py-files-public/main/jobs.zip"

方案2:本地下载后提交

如果不想处理HTTP链接的适配问题,直接将所有依赖文件提前下载到提交任务的本地节点,提交命令直接使用本地路径即可完全规避URL编码问题:

# 先下载所需文件到本地
wget https://raw.githubusercontent.com/config.yml
wget https://raw.githubusercontent.com/LorenzWackenhut/py-files-public/main/jobs.zip
wget https://raw.githubusercontent.com/main.py

# 提交任务使用本地路径
$SPARK_HOME/bin/spark-submit \
  --master local[*] \
  --deploy-mode client \
  --name spark-python \
  --conf spark.driver.memory=4g \
  --files config.yml \
  --py-files jobs.zip \
  main.py

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 06:24:05