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

同路径CSV文件PySpark可正常读取 但Pandas读取时报FileNotFoundError

问题原因

核心原因是Spark和Pandas默认读取的文件系统不一致:

  • Spark在分布式集群环境下默认寻址HDFS(分布式文件系统),你所用的/tmp/cs/data_train/cs_subsprofile.csv路径实际存放在HDFS上,Spark可以直接识别访问。
  • Pandas的read_csv默认只读取当前代码运行节点的本地文件系统路径,无法直接访问HDFS上的文件,因此会抛出文件不存在的错误。
  • 少数场景下如果是单节点运行,也可能是运行Pandas进程的用户没有对应路径的读取权限,或者文件实际存放在其他节点的本地磁盘,当前节点没有该文件。

解决方案

可根据你的使用场景选择以下方案:

  • 数据量不大(小于Driver节点可用内存)时,直接将Spark读取的DataFrame转为Pandas对象即可,无需重复读文件:
# 先用Spark读取文件后直接转Pandas
fd_subsprofile = spark.read.csv('/tmp/cs/data_train/cs_subsprofile.csv', header = True)
data = fd_subsprofile.toPandas()
  • 需要直接读HDFS文件时,可借助HDFS客户端工具先把文件拉到本地再读取:
    先执行shell命令拉取文件:
    hdfs dfs -get /tmp/cs/data_train/cs_subsprofile.csv ./local_subsprofile.csv
    再用Pandas读本地文件:
data = pd.read_csv('./local_subsprofile.csv')
  • 不想落地本地文件的话,也可以用Python HDFS依赖直接读取HDFS文件流传给Pandas:
from hdfs import InsecureClient
import pandas as pd

# 替换为你集群的namenode地址和用户名
hdfs_client = InsecureClient('http://namenode_host:50070', user='hdfs_user')
with hdfs_client.read('/tmp/cs/data_train/cs_subsprofile.csv') as f:
    data = pd.read_csv(f)
  • 如果你是本地单节点运行Spark,确认文件存放在本地磁盘的话,检查路径拼写、大小写,以及运行Python进程的用户是否有该路径的读取权限即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 17:45:03