PySpark通过s3a加载S3数据报IOStatisticsSource类缺失错误如何解决
错误根因
你遇到的报错核心是Hadoop组件版本不兼容:org.apache.hadoop.fs.statistics.IOStatisticsSource 是Hadoop 3.3.0及以上版本才新增的接口,当你使用的s3a实现依赖(hadoop-aws)版本≥3.3.0,但Spark环境内置的hadoop-common版本低于3.3.0时,就会出现类找不到的问题。
解决步骤
- 先确认当前Spark绑定的Hadoop版本,执行命令
spark-submit --version,记录输出中标识的Hadoop版本号 - 下载和上述版本完全一致的两个依赖包:
- hadoop-aws:s3a协议的官方实现包
- aws-java-sdk-bundle:和对应hadoop-aws版本匹配的AWS SDK包
- 依赖加载方式二选一:
- 把两个jar包放到Spark安装目录的jars文件夹下,全局生效
- 提交作业时通过
--jars hadoop-aws-xxx.jar,aws-java-sdk-bundle-xxx.jar参数指定加载,单次作业生效
注意事项
- 禁止单独升级hadoop-aws到高于Spark内置Hadoop的版本,即使是小版本号差异也可能引发依赖冲突
- 如果是本地PySpark环境,也可以通过pip安装对应版本的依赖包,或者在代码中通过spark.jars配置项指定依赖路径
内容的提问来源于stack exchange,提问作者SeaTea
相关产品推荐
相关产品推荐

