PySpark读取CSV文件报错UnsupportedFileSystemException求助
解决PySpark读取本地CSV时的
No FileSystem for scheme "null"错误 错误原因分析
这个错误核心是Hadoop路径解析器无法识别文件路径对应的文件系统协议,主要由两点导致:
- 路径格式错误:你写的
//Users/myuser/pysparktest/拼接后会生成//Users/myuser/pysparktest//utilization.csv,多余的斜杠让Hadoop无法正确推断本地文件系统的file://协议,最终返回null作为scheme。 - 未显式指定本地文件系统:Spark依赖Hadoop的文件系统实现,默认情况下可能无法自动识别本地文件系统,导致协议匹配失败。
解决方案
1. 修正文件路径写法
改用标准的本地绝对路径格式,避免多余斜杠:
# 直接使用单斜杠的绝对路径 utilization_path = '/Users/myuser/pysparktest/utilization.csv' # 或者显式加上file://前缀(推荐,避免歧义) utilization_path = 'file:///Users/myuser/pysparktest/utilization.csv'
2. 显式配置SparkSession使用本地文件系统
在构建SparkSession时,添加Hadoop文件系统的强制配置,确保Spark使用本地文件系统处理路径:
from pyspark.sql import SparkSession spark = SparkSession \ .builder \ .config("spark.hadoop.fs.file.impl", "org.apache.hadoop.fs.LocalFileSystem") \ .getOrCreate() utilization_path = '/Users/myuser/pysparktest/utilization.csv' # 读取CSV时建议加上header和inferSchema参数,自动识别表头和字段类型 user_df = spark.read.csv(utilization_path, header=True, inferSchema=True) # 验证读取结果 user_df.show()
额外检查项
- 确认
utilization.csv确实存在于指定路径,文件名拼写无误(MacOS大小写不敏感,但最好保持一致)。 - 确保当前用户对该文件和所在目录有读取权限。
内容的提问来源于stack exchange,提问作者user25439752
相关产品推荐
相关产品推荐

