2017-12-23 15 views
0

私の構成は次のとおりです。 Spark2.2.1互換性のないジャクソンバージョン2.8.8

  • EclipseのNeon.3リリース(4.6.3)
  • のWindows 7 64ビット
  • (ScalaのIDEプラグイン)

    • スカラ2.11

      package it.scala 
      
      // importo packages di Spark 
      import org.apache.spark.SparkContext 
      import org.apache.spark.SparkConf 
      
      
      object Wordcount { 
          def main(args: Array[String]) { 
      
           val inputs: Array[String] = new Array[String](2) 
           inputs(0) = "C:\\Users\\FobiDell\\Desktop\\input" 
           inputs(1) = "C:\\Users\\FobiDell\\Desktop\\output" 
      
           // oggetto SparkConf per settare i parametri sulla propria applicazione 
           // da fornire poi al cluster manager scelto (Yarn, Mesos o Standalone). 
           val conf = new SparkConf() 
           conf.setAppName("Smartphone Addiction") 
           conf.setMaster("local") 
      
           // oggetto SparkContext per connessione al cluster manager scelto 
           val sc = new SparkContext(conf) 
      
           //Read file and create RDD 
           val rawData = sc.textFile(inputs(0)) 
      
           //convert the lines into words using flatMap operation 
           val words = rawData.flatMap(line => line.split(" ")) 
      
           //count the individual words using map and reduceByKey operation 
           val wordCount = words.map(word => (word, 1)).reduceByKey(_ + _) 
      
           //Save the result 
           wordCount.saveAsTextFile(inputs(1)) 
      
           //stop the spark context 
           sc.stop 
      
          } 
      
      } 
      

    私はこの単純なScalaのコード(Esempio.scala)を実行したいです

    Spark-shellを使用すると、Eclipse IDEからファイル(Esempio.scala)を選択し、Run-> Run as-> Scalaアプリケーションで実行すると、例外が得られます。

    Exception in thread "main" java.lang.ExceptionInInitializerError 
        at org.apache.spark.SparkContext.withScope(SparkContext.scala:701) 
        at org.apache.spark.SparkContext.textFile(SparkContext.scala:830) 
        at it.scala.Wordcount$.main(Esempio.scala:47) 
        at it.scala.Wordcount.main(Esempio.scala) 
    Caused by: com.fasterxml.jackson.databind.JsonMappingException: Incompatible Jackson version: 2.8.8 
        at com.fasterxml.jackson.module.scala.JacksonModule$class.setupModule(JacksonModule.scala:64) 
        at com.fasterxml.jackson.module.scala.DefaultScalaModule.setupModule(DefaultScalaModule.scala:19) 
        at com.fasterxml.jackson.databind.ObjectMapper.registerModule(ObjectMapper.java:745) 
        at org.apache.spark.rdd.RDDOperationScope$.<init>(RDDOperationScope.scala:82) 
        at org.apache.spark.rdd.RDDOperationScope$.<clinit>(RDDOperationScope.scala) 
        ... 4 more 
    

    私のpom.xmlファイルは次のとおりです。

      <project xmlns="http://maven.apache.org/POM/4.0.0" 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"> 
          <modelVersion>4.0.0</modelVersion> 
      
          <groupId>it.hgfhgf.xhgfghf</groupId> 
          <artifactId>progetto</artifactId> 
          <version>0.0.1-SNAPSHOT</version> 
          <packaging>jar</packaging> 
      
          <name>progetto</name> 
          <url>http://maven.apache.org</url> 
      
          <properties> 
          <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
          </properties> 
      
          <dependencies> 
          <dependency> 
           <groupId>junit</groupId> 
           <artifactId>junit</artifactId> 
           <version>3.8.1</version> 
           <scope>test</scope> 
          </dependency> 
      
          <!-- Neo4j JDBC DRIVER --> 
          <dependency> 
           <groupId>org.neo4j</groupId> 
           <artifactId>neo4j-jdbc-driver</artifactId> 
           <version>3.1.0</version> 
          </dependency> 
      
          <!-- Scala --> 
          <dependency> 
           <groupId>org.scala-lang</groupId> 
           <artifactId>scala-library</artifactId> 
           <version>2.11.11</version> 
          </dependency> 
      
          <!-- Spark --> 
          <dependency> 
           <groupId>org.apache.spark</groupId> 
           <artifactId>spark-core_2.11</artifactId> 
           <version>2.2.1</version> 
          </dependency> 
      
      
          </dependencies> 
      
      
      </project> 
      

      私は火花2.2.1-binに-hadoop2.7 /瓶ディレクトリにある.jarファイルがあることに気づきました

    • jackson-core-2.6.5.jar
    • ジャクソンデータバインド-2.6.5.jar
    • ジャクソン・モジュールparanamer-2.6.5.jar
    • ジャクソン・モジュールscala_2.11-2.6.5.jar
    • ジャクソン注釈-2.6。 5.jar

    誰もがこの例外とはどのように解決できますか簡単に言えますか?

    答えて

    2

    スパーク2.xにはjackson 2.6.5が含まれ、neo4j-jdbc-driverにはjackson 2.8.8バージョンが使用されています。ここでは、2つの異なるバージョンのジャクソンライブラリ間の依存関係の競合があります。 だからこそ、これはIncompatible Jackson version: 2.8.8エラーです。

    てみ

    1. ジャクソンコア
    2. ジャクソン、データバインド、あなたのpom.xml内部のこれらの[以下]のモジュールの依存関係のバージョンを上書きして動作するかどうかを知るため
    3. ジャクソン・モジュールscala_2.x

    たりのpom.xmlに依存関係の下に追加してみてください

     <dependency> 
          <groupId>com.fasterxml.jackson.module</groupId> 
          <artifactId>jackson-module-scala_2.11</artifactId> 
          <version>2.8.8</version> 
         </dependency> 
    
    0

    私はジャクソンの同じバージョンの競合に遭遇しました。 jackson-core、jackson-databind、jackson-module-scala_2.xの上書きに加えて、私はpom.xmlにjackson-annotationsを定義しました。これは競合を解決しました。

    関連する問題