我正在尝试使用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的兼容版本
有人能帮我吗?
1条答案
按热度按时间bvk5enib1#
Spark自带了自己的Jackson版本。并且Jackson在次要版本之间不兼容。因此您不能在项目中混合Jackson版本依赖项。
避免麻烦的最简单方法是使用与Spark相同的版本,并在构建定义中将依赖项标记为
Provided
。对于Spark 2.4.x,使用的是Jackson2.6.x。
编辑:你还应该确保你没有另一个依赖项拉另一个Jackson版本。你可以使用SBT
dependencyOverrides
来实现这一点。请注意,也有可能包含另一个版本的Jackson,并通过使用“userClasspathFirst”属性强制Spark使用它。