2015-11-19 6 views
13

これは少し奇妙です。私は図書館のいくつかの依存関係にあるいくつかの矛盾があると思いSpark com.fasterxml.jackson.module error

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; 

:非常にシンプルなsparkContext.parallelize(List("1","2","3"))

を実行しているとき、私は次のエラーを取得しています。私の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 := {} 

どこのポインタを参照してください?

おかげ

答えて

10

効果で、それはジャクソンデータバインドの異なるバージョンを使用して原因JSON-遊びやスパークへの依存関係の競合がいました。この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 := {} 
+0

解決するために、任意のチャンスこれはsbtの代わりにmavenを使用していますか? – astiefel

+1

違いを大きくするとは思わないでください。この点では依存関係の解決はかなり似ています。 –

+0

ええと私はちょうどすべてのsbtに精通していないよ – astiefel

0

同じプロジェクトでSpring BootとSparkを使用する際に同じ問題が発生することがあります。ちょうどその場合には、Spark以外のプロジェクトからjackson-databindの依存関係を除外します。

+0

私はSpring-Boot v1.3.1とSpark v1.6.0を使用していて、 'com.fasterxml.jackson.core:jackson-databind:2.6.4'に関する競合が発生しています。どうやら、 'org.springframework.boot:spring-boot-starter-web:1.3.1.RELEASE'はv2.6.4を必要とし、Sparkはv2.4.4を必要とします。私がしなければならなかったことは、v2.6.4を除外してから明示的にv.2.4.4に依存することでした。今のところ働いているようだ。 –

19

春ブーツ1.3.1 + Apacheのスパーク1.6.0の問題は、追加の依存関係によって解決されなかった。

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

ませ除外を必要とされる任意の他の依存関係から。

+1

+1それは動作します:-)。 'org.codehaus.jackson:jackson-mapper-asl'を入れて除外したいかもしれませんが、クラスパスに' AsArraySerializerBase'の2つのバージョンがあるので、 –

+0

が私の問題を解決しました! +1。私は誰もが必要な場合は答えにgradle相当を投稿しました – gudthing

8

SBTにこれらの行を追加するだけです。

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

これはSpark 1.6.1とplay-json 2.4.8のために私にとってはうまくいきませんでした。 –

+1

jackson-databindのバージョンを変更してみてください。あなたのplay-jsonバージョンと同じように設定してください(例:現在2.4.4を使用していますので、あなたのケースでは2.4.8に変更してください)。 –

0

私も同じ問題があり、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' 

あなたは問題が発生した場合は、常にあなたがhereを見つけることができます異なるバージョンを試すことができます(とMavenとSBTのユーザーに適用されます)

関連する問題