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

PySpark连接Big Query报错求助:Scala版本兼容问题排查

问题解决方向

核心问题定位

报错中的关键信息:This connector was made for Scala null, it was not meant to run on Scala 2.12,说明BigQuery Connector依赖包与Scala/Spark版本不兼容,且存在重复依赖冲突。

具体解决步骤

1. 清理重复的Jar依赖

你的spark.jars.packages中同时引入了多个功能重叠的BigQuery Connector包(spark-3.2-bigquery:0.30.0、spark-bigquery-with-dependencies_2.12:0.30.0、spark-bigquery_2.12:0.30.0),这些包会导致版本冲突,且不带Scala版本后缀的包无法正确识别当前Scala环境。

只需保留spark-bigquery-with-dependencies_2.12:0.30.0即可,它已包含所有BigQuery连接所需的依赖,无需额外添加其他BigQuery相关包。

2. 修正Spark配置

更新依赖配置,同时规范SparkSession的创建方式(Spark 3.x推荐通过SparkSession统一配置,避免先创建SparkContext导致的冲突):

# Scala version 2.12.15
# Spark Version 3.2.1

from pyspark.sql import SparkSession

spark = SparkSession.builder.appName('pyspark-big-data-workflow') \
    .config('spark.jars.packages', 'com.google.cloud.bigdataoss:gcs-connector:hadoop3-2.2.0,com.google.cloud.spark:spark-bigquery-with-dependencies_2.12:0.30.0') \
    .config('spark.storage.memoryFraction', '1') \
    .config('spark.executor.instances', '20') \
    .config('spark.executor.cores', '15') \
    .config('spark.executor.memory', '4g') \
    .config('spark.driver.memory', '8g') \
    .config('spark.serializer', 'org.apache.spark.serializer.KryoSerializer') \
    .getOrCreate()

sc = spark.sparkContext

3. 验证版本兼容性

  • spark-bigquery-with-dependencies_2.12:0.30.0 官方支持Spark 3.2.x和Scala 2.12.x,与你的环境匹配
  • gcs-connector:hadoop3-2.2.0 适配Hadoop 3.x,与Spark 3.2.1默认的Hadoop版本兼容

4. 重新运行加载代码

保持数据加载代码不变,重新执行:

table = 'table.name'
df = spark.read.format('bigquery') \
    .option('table', table)\
    .load()

df.show()
df.printSchema()

(注:变量名rdd实际指向DataFrame,改为df更准确,但不影响功能)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 12:17:34