PySpark已存在JAR包仍无法实例化GoogleHadoopFileSystem问题求助
问题根因
你遇到的是Guava版本冲突问题:
报错中的java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkState说明你本地Windows环境加载的Guava版本低于GCS连接器依赖的版本,对应方法不存在,直接导致GoogleHadoopFileSystem类初始化失败。
Linux环境可以正常运行是因为该环境下Spark/Hadoop类路径中的Guava版本符合GCS连接器要求,而本地Windows环境的类路径优先级配置有误,优先加载了自带的旧版本Guava。
解决方案
按以下顺序排查修复:
- 首先调整Spark提交时的类加载优先级,提交任务时添加以下参数,让用户指定的JAR优先级高于Spark自带JAR:
你使用的Spark3.1.2自带Guava版本为11.0.2,远低于GCS连接器要求的27.1及以上版本,必须强制让高版本Guava优先加载。spark-submit --conf spark.driver.userClassPathFirst=true \ --conf spark.executor.userClassPathFirst=true \ --jars 你的GCS连接器jar包路径,对应版本的Guava jar包路径 \ 主脚本路径.py - 若上述配置不生效,直接替换本地Spark安装目录下的Guava包:找到
%SPARK_HOME%\jars\guava-xx.x.jar,删除旧版本Guava,替换为和GCS连接器匹配的高版本Guava(推荐使用30.1.1-jre版本,兼容性最佳)。 - 额外检查本地Python虚拟环境中PySpark自带的JAR包,路径为
你的虚拟环境路径\lib\site-packages\pyspark\jars,同样替换其中的旧Guava包即可。
内容的提问来源于stack exchange,提问作者user14597035
相关产品推荐
相关产品推荐

