在spark scala中阅读文件时获取不兼容的Jackson版本

wlwcrazw  于 2022-11-23  发布在  Spark
关注(0)|答案(1)|浏览(289)

我正在尝试使用spark scala读取一个简单的json文件,代码如下

val data =spark.read.option("multiLine",true).json(jsonpath)

但是,我在阅读它时遇到错误

原因:com.fasterxml.jackson.databind.JsonMappingException:不兼容的Jackson版本:2.11.2页次

下面是sbt文件

"org.apache.spark" %% "spark-core" % "2.4.0",
  "org.apache.spark" %% "spark-sql" % "2.4.0",
  "org.apache.spark" %% "spark-streaming" % "2.4.0",
  "com.fasterxml.jackson.module" %% "jackson-module-scala" % "2.6.7.1",
  "com.fasterxml.jackson.core" % "jackson-databind" % "2.6.7",
  "com.fasterxml.jackson.core" % "jackson-core" % "2.6.7"

我已经尝试了不同的版本。我无法找到Spark2.4的兼容版本
有人能帮我吗?

bvk5enib

bvk5enib1#

Spark自带了自己的Jackson版本。并且Jackson在次要版本之间不兼容。因此您不能在项目中混合Jackson版本依赖项。
避免麻烦的最简单方法是使用与Spark相同的版本,并在构建定义中将依赖项标记为Provided
对于Spark 2.4.x,使用的是Jackson2.6.x。
编辑:你还应该确保你没有另一个依赖项拉另一个Jackson版本。你可以使用SBT dependencyOverrides来实现这一点。
请注意,也有可能包含另一个版本的Jackson,并通过使用“userClasspathFirst”属性强制Spark使用它。

相关问题