Подтвердить что ты не робот

Ошибка Spark com.fasterxml.jackson.module

Это немного странно. При запуске очень простой sparkContext.parallelize(List("1","2","3"))

Я получаю следующую ошибку:

java.lang.VerifyError: class com.fasterxml.jackson.module.scala.ser.ScalaIteratorSerializer overrides final method withResolved.(Lcom/fasterxml/jackson/databind/BeanProperty;Lcom/fasterxml/jackson/databind/jsontype/TypeSerializer;Lcom/fasterxml/jackson/databind/JsonSerializer;)Lcom/fasterxml/jackson/databind/ser/std/AsArraySerializerBase;

Я предполагаю, что в зависимостях некоторых библиотек есть конфликт. Мой файл build.sbt выглядит так:

scalaVersion := "2.11.7"

//Library repositories
resolvers ++= Seq(
  Resolver.mavenLocal,
  "Scala-Tools Maven2 Repository" at "http://scala-tools.org/repo-releases",
  "Java.net repository" at "http://download.java.net/maven/2",
  "GeoTools" at "http://download.osgeo.org/webdav/geotools",
  "Apache" at "https://repository.apache.org/service/local/repositories/releases/content",
  "Cloudera" at "https://repository.cloudera.com/artifactory/cloudera-repos/",
  "OpenGeo Maven Repository" at "http://repo.opengeo.org",
  "Typesafe" at "https://repo.typesafe.com/typesafe/releases/",
  "Spray Repository" at "http://repo.spray.io"
)

//Library versions
val geotools_version = "13.2"
val accumulo_version = "1.6.0-cdh5.1.4"
val hadoop_version = "2.6.0-cdh5.4.5"
val hadoop_client_version = "2.6.0-mr1-cdh5.4.5"
val geowave_version = "0.9.0-SNAPSHOT"
val akka_version = "2.4.0"
val spray_version = "1.3.3"
val spark_version = "1.5.0"

//Library Dependencies
libraryDependencies ++= Seq(
  //Scala
  "org.scala-lang" % "scala-library" % scalaVersion.value,
  "org.scala-lang" % "scala-reflect" % scalaVersion.value,

  //GeoTools
  "org.geotools" % "gt-data" % geotools_version,
  "org.geotools" % "gt-geojson" % geotools_version,

  //Apache
  "org.apache.accumulo" % "accumulo-core" % accumulo_version,
  "org.apache.hadoop" % "hadoop-common" % hadoop_version,
  "org.apache.hadoop" % "hadoop-client" % hadoop_client_version,

  //Geowave
  "mil.nga.giat" % "geowave-core-store" % geowave_version,
  "mil.nga.giat" % "geowave-datastore-accumulo" % geowave_version,
  "mil.nga.giat" % "geowave-adapter-vector" % geowave_version,

  //Other
  "com.typesafe" % "config" % "1.3.0",

  //Spray - Akka
  "com.typesafe.akka" %% "akka-actor" % akka_version,

  "io.spray" %% "spray-can" % spray_version,
  "io.spray" %% "spray-routing" % spray_version,
  "io.spray" %% "spray-testkit" % spray_version % "test",

  //Spark
  "org.apache.spark" %% "spark-core" % spark_version,

  "com.typesafe.play" %% "play-json" % "2.5.0-M1",

  //Testing
  "org.scalatest" % "scalatest_2.11" % "2.2.4" % "test"
).map(
  _.excludeAll(ExclusionRule(organization = "org.mortbay.jetty"))
)

test in assembly := {}

Любые указатели на то, где искать?

Спасибо

4b9b3361

Ответ 1

Spring Boot 1.3.1 + Проблема Apache Spark 1.6.0 была решена путем добавления зависимости:

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.4.4</version>
   </dependency>

Нет исключений из любой другой зависимости, требуемой.

Ответ 2

По сути, это был конфликт зависимости из-за json-play и искры с использованием разных версий привязки данных Jackson. Этот build.sbt, похоже, решает проблему:

scalaVersion := "2.11.7"

//Library repositories
resolvers ++= Seq(
  Resolver.mavenLocal,
  "Scala-Tools Maven2 Repository" at "http://scala-tools.org/repo-releases",
  "Java.net repository" at "http://download.java.net/maven/2",
  "GeoTools" at "http://download.osgeo.org/webdav/geotools",
  "Apache" at "https://repository.apache.org/service/local/repositories/releases/content",
  "Cloudera" at "https://repository.cloudera.com/artifactory/cloudera-repos/",
  "OpenGeo Maven Repository" at "http://repo.opengeo.org",
  "Typesafe" at "https://repo.typesafe.com/typesafe/releases/",
  "Spray Repository" at "http://repo.spray.io"
)

//Library versions
val geotools_version = "13.2"
val accumulo_version = "1.6.0-cdh5.1.4"
val hadoop_version = "2.6.0-cdh5.4.5"
val hadoop_client_version = "2.6.0-mr1-cdh5.4.5"
val geowave_version = "0.9.0-SNAPSHOT"
val akka_version = "2.4.0"
val spray_version = "1.3.3"
val spark_version = "1.5.2"

//Library Dependencies
libraryDependencies ++= Seq(
  //Scala
  "org.scala-lang" % "scala-library" % scalaVersion.value,
  "org.scala-lang" % "scala-reflect" % scalaVersion.value,

  //GeoTools
  "org.geotools" % "gt-data" % geotools_version,
  "org.geotools" % "gt-geojson" % geotools_version,

  /** ********************************************** PROVIDED ****************************************/
  //  Apache
  //    "org.apache.accumulo" % "accumulo-core" % accumulo_version % "provided",
  //    "org.apache.hadoop" % "hadoop-common" % hadoop_version% "provided",
  //    "org.apache.hadoop" % "hadoop-client" % hadoop_client_version% "provided",
  //
  //    //Geowave
  //    "mil.nga.giat" % "geowave-core-store" % geowave_version % "provided",
  //    "mil.nga.giat" % "geowave-datastore-accumulo" % geowave_version % "provided",
  //    "mil.nga.giat" % "geowave-adapter-vector" % geowave_version % "provided",

  /** **********************************************************************************************/
  //Apache
  "org.apache.accumulo" % "accumulo-core" % accumulo_version,
  "org.apache.hadoop" % "hadoop-common" % hadoop_version,
  "org.apache.hadoop" % "hadoop-client" % hadoop_client_version,

  //Geowave
  "mil.nga.giat" % "geowave-core-store" % geowave_version,
  "mil.nga.giat" % "geowave-datastore-accumulo" % geowave_version,
  "mil.nga.giat" % "geowave-adapter-vector" % geowave_version,

  //Other
  "com.typesafe" % "config" % "1.3.0",

  //Spray - Akka
  "com.typesafe.akka" %% "akka-actor" % akka_version,

  "io.spray" %% "spray-can" % spray_version,
  "io.spray" %% "spray-routing" % spray_version,
  "io.spray" %% "spray-testkit" % spray_version % "test",
  "com.typesafe.play" %% "play-json" % "2.5.0-M1"
    exclude("com.fasterxml.jackson.core", "jackson-databind"),

  //Spark
  "org.apache.spark" %% "spark-core" % spark_version,

  //Testing
  "org.scalatest" % "scalatest_2.11" % "2.2.4" % "test"
).map(
  _.excludeAll(
    ExclusionRule(organization = "org.mortbay.jetty")
  )
)

test in assembly := {}

Ответ 3

Просто добавьте эти строки в свой SBT.

dependencyOverrides ++= Set(
  "com.fasterxml.jackson.core" % "jackson-databind" % "2.4.4"
)

Ответ 4

у вас могут возникнуть проблемы с использованием Spring Boot и Spark в тех же проектах. На всякий случай - исключить зависимости Jackson-databind от других проектов, кроме Spark.

Ответ 5

У меня также была такая же проблема, и решение njjnex работало для меня! Я использовал Spring Boot 1.3.3 + Spark 1.6.1 и Gradle 2.9 как инструмент построения. Вот решение для пользователей Gradle:

 compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.4.4'

Если вы испытываете проблемы, всегда можете попробовать другую версию, которую вы можете найти здесь (применимо к пользователям Maven и SBT)