作者:fover黄瓜小妞1 | 来源:互联网 | 2023-02-10 21:18
我为SparkSQL编写了一个代码.我使用Eclipse Neon运行它.它工作正常.当我转移到IntelliJ Idea时,相同的代码没有运行.
这是代码:
SparkSession spark = SparkSession
.builder()
.appName("Java Spark Hive Example")
.master("local[*]")
.config("hive.metastore.uris", "thrift://localhost:9083")
.enableHiveSupport()
.getOrCreate();
spark.sql("select survey_response_value from health").show();
我得到的例外是:
https://justpaste.it/13tsa
请告诉我为什么我会遇到这个问题.我怎么解决这个问题?我应该从一开始就使用IntelliJ编写代码,还是有任何帮助机制?
1> sgvd..:
问题是这个例外:
com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.5.1
基本上,Spark使用Jackson版本2.6.5,但是你使用的另一个依赖项是将Jackson的旧版本(2.5.1)放在类路径上.很难说为什么Eclipse和IntelliJ之间存在差异,但我的猜测是它们以不同方式构建类路径,因此使用Eclipse时首先放置正确的版本.
关于SO的这个错误有几个问题,例如:
com.fasterxml.jackson.databind.JsonMappingException:杰克逊版本太旧2.5.3
杰克逊版本太旧了
com.fasterxml.jackson.databind.JsonMappingException:杰克逊版本太旧2.4.3错误
对我来说,使用Spark 2.x,将以下内容添加到您的build.sbt
确保使用正确的版本:
dependencyOverrides ++= Set(
"com.fasterxml.jackson.core" % "jackson-annotations" % "2.6.5",
"com.fasterxml.jackson.core" % "jackson-core" % "2.6.5",
"com.fasterxml.jackson.core" % "jackson-databind" % "2.6.5"
)