首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GCP BigQuery依赖关系导致火花读取失败并导致Jackson数据库依赖错误

GCP BigQuery依赖关系导致火花读取失败并导致Jackson数据库依赖错误
EN

Stack Overflow用户
提问于 2022-09-05 08:25:30
回答 1查看 91关注 0票数 0

我需要使用Spark处理文件中的数据,然后保存到GCP BigQuery中,但是当火花读取发生时,我遇到了一个异常,并且sbt根据主要需要具有GCP BigQuery的库依赖。

我面临的例外:

代码语言:javascript
复制
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文件:

代码语言:javascript
复制
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
}

火花代码:

代码语言:javascript
复制
spark.read
      .format("csv")
      .load("mypath")

为了解决这个问题,我尝试了以下几种方法,但是这些方法都不起作用,而且异常仍然存在。

  1. 从BigQuery在sbt中的依赖项中排除了数据库依赖,

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“、”杰克逊-注释“)

  1. 排除依赖项,然后在sbt中显式添加如下,

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

  1. 试图更改BigQuery依赖项的各种版本。

2.12.13

  • 试图像
  1. 一样修改scala版本

奇怪的是,如果我移除BigQuery的依赖项,那么Spark代码运行良好,不会出现任何错误。

到目前为止,什么都没有起作用,我仍然不确定问题的根本原因。如果我能在这里得到迅速的帮助,我会非常感激的。你可以自由地建议一些东西去尝试。提前谢谢你!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-07 13:34:01

我找出了根本原因并找到了解决办法

问题是Spark和BigQuery使用的杰克逊不同,所以我尝试使用Spark,它使用的是BigQuery使用的相同的杰克逊(我不能更改Bigquery的版本,因为它已经是最新版本了)。

我把星火升级到3.3.0,它成功了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73606520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档