Spark程序无法读取本地CSV文件求助(PyCharm环境)
Spark读取本地CSV文件失败问题解决
问题场景
在PyCharm中运行Spark程序时,直接使用相对路径"data/flight*.csv"读取本地CSV文件失败,但通过命令行位置参数sys.argv[1]传入路径却能正常读取,报错信息如下:
代码片段
# Processing logic here... flightTimeCsvDF = spark.read \ .format("csv") \ .option("header", "true") \ .load("data/flight*.csv") # .load(sys.argv[1])
错误信息
Exception in thread "globPath-ForkJoinPool-1-worker-1" java.lang.UnsatisfiedLinkError: 'boolean org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(java.lang.String, int)' at org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Native Method) at org.apache.hadoop.io.nativeio.NativeIO$Windows.access(NativeIO.java:793) at org.apache.hadoop.fs.FileUtil.canRead(FileUtil.java:1218) at org.apache.hadoop.fs.FileUtil.list(FileUtil.java:1423) at org.apache.hadoop.fs.RawLocalFileSystem.listStatus(RawLocalFileSystem.java:601) at org.apache.hadoop.fs.FileSystem.listStatus(FileSystem.java:1972) at org.apache.hadoop.fs.FileSystem.listStatus(FileSystem.java:2014) at org.apache.hadoop.fs.ChecksumFileSystem.listStatus(ChecksumFileSystem.java:761) at org.apache.hadoop.fs.Globber.listStatus(Globber.java:128)
解决方法
配置Hadoop原生库(Windows环境)
Spark依赖Hadoop本地库,Windows下需手动配置:- 下载与Spark兼容版本的Hadoop Windows二进制包(如hadoop-3.3.4)
- 解压后设置系统环境变量
HADOOP_HOME指向解压目录 - 将
%HADOOP_HOME%\bin添加到系统PATH中 - 重启PyCharm使配置生效
修正文件路径写法
- 使用绝对路径,例如
"C:/your-project-path/data/flight*.csv"(注意用正斜杠或双反斜杠) - 确认PyCharm运行配置的Working directory设置为项目根目录(路径:Run → Edit Configurations → Working directory)
- 使用绝对路径,例如
禁用Hadoop原生IO
在初始化SparkSession时添加配置,强制使用非原生IO绕过依赖问题:from pyspark.sql import SparkSession spark = SparkSession.builder \ .appName("FlightDataProcessing") \ .config("spark.hadoop.io.native.lib.available", "false") \ .getOrCreate()检查文件权限
确保当前操作系统用户对data文件夹及其中的CSV文件拥有读取权限
内容的提问来源于stack exchange,提问作者Piyush
相关产品推荐
相关产品推荐

