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

本地使用PySpark读取S3数据提示BasicAWSCredentialsProvider类找不到如何解决

问题根因及解决步骤

1 类名配置错误

你使用的Hadoop 3.2.0版本中,静态凭证提供者的全限定类名配置错误,你填写的org.apache.hadoop.fs.s3a.BasicAWSCredentialsProvider是AWS SDK内置类,不属于Hadoop S3A的实现类,正确的Hadoop S3A静态凭证提供者类名为org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider,将如下配置行:

hadoop_conf.set("fs.s3a.aws.credentials.provider", "org.apache.hadoop.fs.s3a.BasicAWSCredentialsProvider")

修改为:

hadoop_conf.set("fs.s3a.aws.credentials.provider", "org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider")

本地测试场景下也可以直接删除该行配置,只要配置了fs.s3a.access.key和fs.s3a.secret.key,S3A客户端会自动加载静态凭证,无需显式指定提供者类。另外你的代码中初始化boto3的逻辑和Spark读取S3完全无关,Spark走JVM层的Hadoop S3A客户端读取数据,不依赖Python侧的boto3凭证,该段代码可以直接删除

2 修复Hadoop依赖版本冲突

你当前的Hadoop jar包存在跨版本混用问题:spark-3.2.0-bin-hadoop3.2配套的Hadoop版本为3.2.0,但依赖中存在3.3.1版本的hadoop-client-api、hadoop-client-runtime,跨版本混用会直接导致类加载异常、方法不兼容等问题:

  • 移除3.3.1版本的两个Hadoop jar包
  • 替换为对应3.2.0版本的hadoop-client-api、hadoop-client-runtime jar包

3 可选:验证AWS SDK版本兼容性

Hadoop 3.2.0官方配套的aws-java-sdk版本为1.11.375,你当前使用的1.11.624版本无核心兼容性问题,若完成前两步后仍有报错,可将AWS SDK全量降级到1.11.375版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 16:24:00