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

Dataproc Serverless Runtime1.2版本不匹配引发服务配置错误求助

解决Dataproc Serverless 1.2中Spark-BigQuery连接器的ServiceConfigurationError错误

错误原因

这个ServiceConfigurationError的本质是类加载冲突:Dataproc Serverless runtime中的Spark DataSourceRegister接口,与你打包的业务jar里BigQuery连接器依赖的同名接口,因版本或类加载器差异被判定为不同类,导致BigQueryRelationProvider无法被识别为该接口的实现类。常见触发因素:

  • Scala编译版本与runtime的Scala版本不匹配
  • 业务jar中打包了Dataproc已提供的Spark依赖,引发版本冲突
  • BigQuery连接器的传递依赖与runtime的Spark版本存在隐性冲突

解决步骤

1. 对齐Scala编译版本

Dataproc Serverless 1.2的Spark 3.5.1基于Scala 2.12.18,必须在build.sbt顶部明确指定该版本,避免编译时使用不兼容的Scala版本:

scalaVersion := "2.12.18"

2. 排除BigQuery连接器中的冲突依赖

spark-bigquery-with-dependencies默认包含Spark和Scala依赖,而这些已经由Dataproc runtime提供,需要在依赖声明中排除:

val sparkBigQueryConnector = "com.google.cloud.spark" %% "spark-bigquery-with-dependencies" % sparkBigQueryConnectorVersion excludeAll(
  ExclusionRule(organization = "org.apache.spark"),
  ExclusionRule(organization = "org.scala-lang")
)

3. 打包时剔除Provided依赖

如果使用sbt assembly打包,需配置插件排除provided范围的Spark依赖,避免将核心Spark类打进业务jar:

// 引入assembly插件(若未引入)
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "1.2.0")

// 配置assembly规则
assemblyOption in assembly := (assemblyOption in assembly).value.copy(includeScala = false)
assemblyMergeStrategy in assembly := {
  case PathList("META-INF", xs @ _*) => MergeStrategy.discard
  case x => MergeStrategy.first
}

4. 清理Airflow配置中的冗余依赖

检查jar_file_uris配置,确保仅包含你的业务jar,不要额外引入Spark或BigQuery相关的jar,避免多重依赖冲突。

5. 确认版本兼容性

再次核对版本对应关系(你当前选择的版本是符合官方要求的,可做二次验证):

  • Dataproc Serverless 1.2 → Spark 3.5.1
  • Spark 3.5.1对应BigQuery连接器版本:0.36.4
  • Scala版本必须为2.12.x(禁止使用2.13.x)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 09:25:19