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

PySpark用Minio作Delta Lake存储后端时遇S3AFileSystem类找不到错误

解决方案:Class org.apache.hadoop.fs.s3a.S3AFileSystem not found 错误

核心问题分析

  1. 版本不匹配:本地安装的PySpark(3.2.3)与系统中的Spark(3.3.1)版本不一致,指定的hadoop-aws:3.3.1与PySpark自带的Hadoop版本(spark-3.2.3-bin-hadoop3.2)冲突,导致依赖加载失败。
  2. 配置时机错误:spark.hadoop.fs.s3a.impl需要在SparkSession初始化前配置,创建后通过spark.conf.set设置无法生效。
  3. Minio缺失关键配置:Minio需要开启路径风格访问,否则无法正确识别存储路径。

分步解决

1. 统一Spark与PySpark版本

卸载当前版本,安装与系统Spark匹配的包:

pip uninstall -y pyspark delta-spark
pip install pyspark==3.3.1 delta-spark==2.2.0

2. 修改代码配置

调整依赖版本、提前配置S3A相关参数,并添加Minio必需的路径风格配置:

import pyspark
from delta import *

builder = pyspark.sql.SparkSession.builder.appName("MyApp") \
    # 匹配Spark 3.3.1对应的Hadoop 3.3.2版本,同时指定Delta依赖
    .config("spark.jars.packages", "org.apache.hadoop:hadoop-aws:3.3.2,io.delta:delta-core_2.12:2.2.0") \
    .config("spark.sql.extensions", "io.delta.sql.DeltaSparkSessionExtension") \
    .config("spark.sql.catalog.spark_catalog", "org.apache.spark.sql.delta.catalog.DeltaCatalog") \
    .config("spark.hadoop.fs.s3a.access.key", "<my key>") \
    .config("spark.hadoop.fs.s3a.secret.key", "<my secret>") \
    .config("spark.hadoop.fs.s3a.endpoint", "<my endpoint>") \
    # Minio必须开启路径风格访问
    .config("spark.hadoop.fs.s3a.path.style.access", "true") \
    .config("spark.databricks.delta.retentionDurationCheck.enabled", "false") \
    # 提前配置S3A实现类,确保初始化时加载
    .config("spark.hadoop.fs.s3a.impl", "org.apache.hadoop.fs.s3a.S3AFileSystem")

spark = builder.getOrCreate()

data = spark.range(0, 5)
# 写入Minio的Delta路径
data.write.format("delta").save("s3a://<my bucket>/delta-lake/demo")

# 读取时使用相同的Minio路径,而非本地路径
df = spark.read.format("delta").load("s3a://<my bucket>/delta-lake/demo")
df.show()

3. 备选方案:手动添加依赖Jar包

如果自动下载依赖失败,可手动下载对应版本的Jar包放入Spark的jars目录(如C:/Spark/spark-3.3.1-bin-hadoop3.2/jars):

  • hadoop-aws-3.3.2.jar
  • aws-java-sdk-bundle-1.11.901.jar
  • jackson-databind-2.13.2.2.jar

重启应用后重新运行代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 01:35:17