我需要使用Spark处理文件中的数据,然后保存到GCP BigQuery中,但是当火花读取发生时,我遇到了一个异常,并且sbt根据主要需要具有GCP BigQuery的库依赖。
我面临的例外:
Caused by: com.fasterxml.jackson.databind.JsonMappingException: Scala module 2.12.3 requires Jackson Databind version >= 2.12.0 and < 2.13.0
at com.fasterxml.jackson.module.scala.JacksonModule.setupModule(JacksonModule.scala:61)
at com.fasterxml.jackson.module.scala.JacksonModule.setupModule$(JacksonModule.scala:46)
at com.fasterxml.jackson.module.scala.DefaultScalaModule.setupModule(DefaultScalaModule.scala:17)
at com.fasterxml.jackson.databind.ObjectMapper.registerModule(ObjectMapper.java:853)
at org.apache.spark.rdd.RDDOperationScope$.<init>(RDDOperationScope.scala:82)
at org.apache.spark.rdd.RDDOperationScope$.<clinit>(RDDOperationScope.scala)代码引用如下..。
SBT文件:
ThisBuild / version := "0.1.0"
ThisBuild / scalaVersion := "2.12.12"
lazy val root = (project in file("."))
.settings(
name := "spark-code"
)
lazy val sparkVersion = "3.2.0"
libraryDependencies ++= Seq(
"org.apache.spark" %% "spark-core" % sparkVersion,
"org.apache.spark" %% "spark-sql" % sparkVersion,
"org.rogach" %% "scallop" % "4.0.2",
"com.google.cloud" % "google-cloud-pubsub" % "1.120.11",
"com.google.cloud" % "google-cloud-bigquery" % "2.15.0",
"com.google.code.gson" % "gson" % "2.8.9",
"com.crealytics" %% "spark-excel" % "0.14.0"
)
assemblyMergeStrategy in assembly := {
case PathList("META-INF", xs @ _*) => MergeStrategy.discard
case x => MergeStrategy.first
}火花代码:
spark.read
.format("csv")
.load("mypath")为了解决这个问题,我尝试了以下几种方法,但是这些方法都不起作用,而且异常仍然存在。
libraryDependencies ++= Seq("com.google.cloud“% "google-cloud-bigquery”% "2.15.0“、”com.fasterxml.jackson.core“、"jackson-core")排除("com.fasterxml.jackson.core”、"jackson-databind")排除("com.fasterxml.jackson.core“、”杰克逊-注释“)
libraryDependencies ++= Seq("com.google.cloud“%”com.google.cloud bigquery“% "2.15.0”、"com.fasterxml.jackson.core“、"jackson-core")排除("com.fasterxml.jackson.core”、“杰克逊-数据库”)排除("com.fasterxml.jackson.core“、”杰克逊-注释“)、”com.fasterxml.jackson.core“%”杰克逊-数据库“% "2.12.0","com.fasterxml.jackson.core“% "jackson-core”% "2.12.0“)
2.14.0, 2.13.0, 2.12.0 and 2.10.0
2.12.13
奇怪的是,如果我移除BigQuery的依赖项,那么Spark代码运行良好,不会出现任何错误。
到目前为止,什么都没有起作用,我仍然不确定问题的根本原因。如果我能在这里得到迅速的帮助,我会非常感激的。你可以自由地建议一些东西去尝试。提前谢谢你!
发布于 2022-09-07 13:34:01
我找出了根本原因并找到了解决办法
问题是Spark和BigQuery使用的杰克逊不同,所以我尝试使用Spark,它使用的是BigQuery使用的相同的杰克逊(我不能更改Bigquery的版本,因为它已经是最新版本了)。
我把星火升级到3.3.0,它成功了。
https://stackoverflow.com/questions/73606520
复制相似问题