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

Spark读取Parquet文件夹报错,单文件可正常读取求排查

Spark读取Parquet文件夹报错,但单个文件可正常读取

问题描述

我在做Spark基础练习,资料里说读取分片Parquet文件时直接传入文件夹路径就能加载所有分片,但实际操作时,不管用绝对路径、VSCode复制的相对路径还是通过os模块获取的路径,调用spark.read.parquet都会报错。但如果在路径后加上单个Parquet文件名,就能正常读取。

报错信息

An error occurred while calling o30.parquet.
Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z

代码示例

from pyspark.sql import SparkSession
from pyspark.sql.functions import *

# 初始化Spark会话
spark = SparkSession.builder \
    .master("local") \
    .config("spark.sql.autoBroadcastJoinThreshold", -1) \
    .config("spark.executor.memory", "500mb") \
    .appName("Exercise1") \
    .getOrCreate()
    
# 读取Parquet格式的源表
products_table = spark.read.parquet("data/products_parquet")
sales_table = spark.read.parquet("data/sales_parquet")
sellers_table = spark.read.parquet("data/sellers_parquet")

文件夹结构

当前项目根目录下有data文件夹,data内包含products_parquet、sales_parquet、sellers_parquet三个子文件夹,每个子文件夹下存放着多个Parquet分片文件(命名格式如part-00000-xxxx.snappy.parquet)。


解决方法

这个报错是Windows平台下Hadoop原生库加载问题导致的权限检查失败,可按以下步骤解决:

  • 添加Hadoop Windows原生库
    下载和你的Spark依赖Hadoop版本匹配的Windows二进制包,解压后把bin目录下的hadoop.dll、winutils.exe等文件复制到系统System32目录;或者配置HADOOP_HOME环境变量指向解压目录,并把%HADOOP_HOME%\bin加入PATH。

  • 修改Spark会话配置
    初始化SparkSession时添加配置禁用Hadoop权限检查:

    spark = SparkSession.builder \
        .master("local") \
        .config("spark.sql.autoBroadcastJoinThreshold", -1) \
        .config("spark.executor.memory", "500mb") \
        .config("hadoop.security.authorization", "false") \
        .appName("Exercise1") \
        .getOrCreate()
    
  • 规范路径格式
    Windows下路径用正斜杠/或双反斜杠\\,也可以用os.path.abspath()生成绝对路径:

    import os
    products_path = os.path.abspath("data/products_parquet")
    products_table = spark.read.parquet(products_path)
    
  • 检查文件夹权限
    右键目标文件夹→属性→安全,确认当前用户对文件夹有读写权限。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 16:28:28