Проблема:
Когда я запускаю приложение Spark, я сталкиваюсь с проблемами во время выполнения Джексона, в частности jackson-databind. Похоже, что существуют конфликты между версиями Джексона, включенными в зависимости. Несмотря на явное указание версии в pom.xml, проблема сохраняется.
Среда
Версия Java: 11
Версия Spark: 3.5.1
Версия Scala: 2.13
Версия Jackson: 2.15.2
Инструмент сборки: Maven
Журнал ошибок stderr в кластере EMR
Код: Выделить всё
at org.apache.spark.SparkContext.withScope(SparkContext.scala:924)
at org.apache.spark.SparkContext.textFile(SparkContext.scala:1055)
at org.apache.spark.api.java.JavaSparkContext.textFile(JavaSparkContext.scala:175)
at org.example.Main.totalTvSeries(Main.java:73)
at org.example.Main.main(Main.java:47)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:569)
at org.apache.hadoop.util.RunJar.run(RunJar.java:328)
at org.apache.hadoop.util.RunJar.main(RunJar.java:241)
Caused by: com.fasterxml.jackson.databind.JsonMappingException: Scala module 2.15.2 requires Jackson Databind version >= 2.15.0 and < 2.16.0 - Found jackson-databind version 2.12.7-1
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:835)
at org.apache.spark.rdd.RDDOperationScope$.(RDDOperationScope.scala:82)
... 11 more
Код: Выделить всё
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
org.example
IMDBSpark
1.0-SNAPSHOT
11
11
UTF-8
org.apache.spark
spark-core_2.13
3.5.1
org.apache.spark
spark-sql_2.13
3.5.1
com.fasterxml.jackson.core
jackson-databind
2.15.2
com.fasterxml.jackson.module
jackson-module-scala_2.13
2.15.2
com.fasterxml.jackson.core
jackson-databind
2.15.2
com.fasterxml.jackson.core
jackson-core
2.15.2
com.fasterxml.jackson.core
jackson-annotations
2.15.2
org.apache.maven.plugins
maven-shade-plugin
3.2.4
package
shade
org.example.Main
*:*
META-INF/*.SF
META-INF/*.DSA
META-INF/*.RSA
1. Выравнивание версий Джексона: я использовал раздел dependencyManagement в Maven, чтобы выровнять все зависимости Джексона (
Код: Выделить всё
jackson-databind
2. Проверка конфликтов транзитивных зависимостей. Я запустил mvn dependency:tree и обнаружил, что некоторые транзитивные зависимости от Spark включают более старые версии Jackson. Я использовал в некоторой зависимости, чтобы удалить привязку jackson-databind.
В чем мне нужна помощь:
Как мне разрешить этот конфликт между зависимостями Jackson и Spark в проекте на основе Maven?
Подробнее здесь: https://stackoverflow.com/questions/792 ... ade-plugin