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

如何用本地Spark Session加载本地文件?Mac环境报错求助

解决Spark读取本地CSV文件的Path不存在异常

我之前在Mac上用IntelliJ+SBT跑本地Spark Session时也碰到过一模一样的org.apache.spark.sql.AnalysisException路径不存在异常,多半是路径拼写、文件权限或者工作目录的小问题,给你几个实用的排查和解决步骤:

1. 先确认文件真的在你指定的路径里

别光看代码里的路径,手动验证最靠谱:

  • 打开Mac终端,输入命令:
    ls /Users/myuser/Documents/data/dataset.csv
    
    如果终端返回文件名,说明路径完全正确;如果提示No such file or directory,那要么是文件被移走了,要么是你拼写错了路径(比如把Documents写成Document,或者用户名myuser写错了),去Finder里找到文件,右键选「显示简介」,复制正确的路径再试。

2. 检查文件读取权限

有时候文件存在,但当前运行IntelliJ的用户没有读取权限:

  • 终端输入命令查看权限:
    ls -l /Users/myuser/Documents/data/dataset.csv
    
    看输出的权限列(比如-rw-r--r--),确保你的用户有读取权限(r标识)。如果没有,用下面的命令添加读取权限:
    chmod +r /Users/myuser/Documents/data/dataset.csv
    

3. 确认你的Spark Session是本地模式

如果你的Spark Session配置成了集群模式(比如YARN),那本地文件肯定找不到。检查你的SparkSessionWrapper代码,确保master是本地模式:

trait SparkSessionWrapper {
  lazy val spark: SparkSession = SparkSession.builder()
    .master("local[*]") // 必须是local开头的模式
    .appName("LocalSparkDemo")
    .getOrCreate()
}

4. 试试简化路径排查

如果上面的步骤都没问题,可以试试把CSV文件复制到你的IntelliJ项目根目录,用相对路径读取:

val data = spark.read.csv("dataset.csv")

如果这样能成功,说明之前的绝对路径可能有隐藏问题(比如路径里包含空格、特殊字符,这时候需要给路径加引号或者转义空格,比如"/Users/myuser/Documents/my data/dataset.csv")

另外你试的两种路径写法都是正确的:

  • 直接用绝对路径/Users/...:Spark本地模式下会自动识别为本地文件
  • 带file协议的file:///Users/...:三个斜杠是标准写法(file://协议头 + 绝对路径的/),完全没问题

内容的提问来源于stack exchange,提问作者J.Hammond

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:17:38