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

Dataproc Serverless提交Spark作业遇archives文件找不到错误求助

Dataproc Serverless Spark作业配置文件路径问题解决

问题原因

使用--archives传入zip文件时,Dataproc Serverless默认会将压缩包解压到与包名同名的目录(去除.zip后缀),若未显式指定解压目标路径,会导致代码中的相对路径无法匹配到实际文件位置。

解决方案

1. 修改--archives参数,指定解压目标路径

在提交命令中通过#符号为压缩包指定解压后的目标目录,确保代码中的相对路径能正确访问配置文件:

gcloud dataproc batches submit pyspark src/mapper.py \
  --project=$PROJECT_ID \
  --region=$REGION \
  --deps-bucket=$DEPS_BUCKET \
  --container-image=$CONTAINER_IMAGE \
  --service-account=$SERVICE_ACCOUNT \
  --subnet=$SUBNETWORK_URI \
  --py-files=dist/src.zip \
  --archives=dist/config.zip#config \
  -- --arg1="value1"

添加#config后,config.zip会被直接解压到作业工作目录下的config文件夹中,代码里的config/config.yaml路径即可正确找到文件。

2. 确认压缩包内部结构

确保config.zip的内部结构与代码读取路径匹配:

  • 若代码读取config/config.yaml,压缩包内可以是:
    • 直接包含config.yaml文件(#config会将文件放入config目录)
    • 已包含config文件夹,文件夹内存放config.yaml(#config会将整个config文件夹解压到工作目录)

3. 调试用:代码中验证路径

如果仍有问题,可在代码中打印当前工作目录,确认文件位置:

import os
print("Current working directory:", os.getcwd())
# 用绝对路径尝试读取
config_path = os.path.join(os.getcwd(), "config/config.yaml")
with open(config_path, "r") as f:
    COUNTRY_CODES = yaml.load(f, yaml.SafeLoader)

内容的提问来源于stack exchange,提问作者Tom J Muthirenthi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 17:31:12