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

如何访问--files参数指定的文件?读取该文件时路径不存在怎么办?

解决Spark通过--files上传文件后读取路径不存在的问题

这个问题我之前也碰到过,核心是对Spark --files参数的文件分发逻辑理解有误~

你执行spark2-shell --master yarn --files derp.csv时,Spark确实会把derp.csv分发到YARN集群每个executor的工作目录,但它并不会被放到本地文件系统的根目录,所以你用file:///derp.csv去读取自然会报路径不存在的错误。

下面给你两种可行的解决方法:

方法1:使用SparkFiles工具类获取正确路径

Spark专门提供了SparkFiles.get()方法,它会自动帮你定位到--files上传文件的实际绝对路径,代码示例:

import org.apache.spark.SparkFiles
// 获取文件路径并读取
val df = spark.read.csv(SparkFiles.get("derp.csv"))

方法2:直接使用相对路径读取

因为--files上传的文件会被放到executor的当前工作目录下,所以直接用文件名作为相对路径就能读取:

val df = spark.read.csv("derp.csv")

额外说明

如果是在driver端执行读取操作,只要你通过--files提交了文件,driver本地也会同步拿到这个文件,上面两种方法同样适用,不需要额外手动拷贝文件到driver本地。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:07:04