Java Spark2.2.1版本2.8.8

Java Spark2.2.1版本2.8.8,java,eclipse,scala,maven,apache-spark,Java,Eclipse,Scala,Maven,Apache Spark,我的配置是: Scala 2.11(插件Scala IDE) EclipseNeon.3发行版(4.6.3) Windows 7 64位 我想运行以下简单的scala代码(Esempio.scala): 因此,如果我使用Spark shell,一切正常,否则,从Eclipse IDE中,如果我选择文件(Esempio.scala)并通过run->run as->scala应用程序运行它,我将获得以下异常: Exception in thread "main" java.lang.Except

我的配置是:

  • Scala 2.11(插件Scala IDE)
  • EclipseNeon.3发行版(4.6.3)
  • Windows 7 64位
我想运行以下简单的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  
线程“main”java.lang.ExceptionInInitializeError中的异常 位于org.apache.spark.SparkContext.withScope(SparkContext.scala:701) 位于org.apache.spark.SparkContext.textFile(SparkContext.scala:830) 在it.scala.Wordcount$.main(Esempio.scala:47) 位于it.scala.Wordcount.main(Esempio.scala) 原因:com.fasterxml.jackson.databind.JsonMappingException:不兼容的jackson版本:2.8.8 位于com.fasterxml.jackson.module.scala.JacksonModule$class.setupModule(JacksonModule.scala:64) 位于com.fasterxml.jackson.module.scala.DefaultScalaModule.setupModule(DefaultScalaModule.scala:19) 位于com.fasterxml.jackson.databind.ObjectMapper.registerModule(ObjectMapper.java:745) 位于org.apache.spark.rdd.RDDOperationScope$(RDDOperationScope.scala:82) 位于org.apache.spark.rdd.RDDOperationScope$(RDDOperationScope.scala) ... 4更多 我的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>

4.0.0
it.hgfhgf.xhgfghf
普罗格托
0.0.1-快照
罐子
普罗格托
http://maven.apache.org
UTF-8
朱尼特
朱尼特
3.8.1
测试
org.neo4j
neo4j jdbc驱动程序
3.1.0
org.scala-lang
scala图书馆
2.11.11
org.apache.spark
spark-core_2.11
2.2.1
我注意到spark-2.2.1-bin-hadoop2.7/jars目录中的.jar文件是:

  • jackson-core-2.6.5.jar
  • jackson-databind-2.6.5.jar
  • jackson-module-paranamer-2.6.5.jar
  • jackson-module-scala_2.11-2.6.5.jar
  • jackson-annotations-2.6.5.jar

有人能简单地向我解释一下这个异常是什么以及如何解决吗?

Spark 2.x包含
jackson 2.6.5
neo4j jdbc驱动程序使用
jackson 2.8.8
版本,这里是两个不同版本的jackson库之间的依赖冲突。 这就是为什么会出现此
不兼容的Jackson版本:2.8.8
错误

尝试覆盖
pom.xml
中这些[以下]模块的依赖项版本,看看是否有效

  • 杰克逊核心
  • 杰克逊数据绑定
  • jackson-module-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> 
    
    
    com.fasterxml.jackson.module
    jackson-module-scala_2.11
    2.8.8
    
    我确实遇到了与杰克逊相同的版本冲突。除了覆盖jackson核心、jackson数据绑定、jackson-module-scala_2.x之外,我还在pom.xml中定义了jackson注释,从而解决了冲突

    Scala 2.1.1版与Jackson 2.6.5兼容。使用以下命令:

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.6.5</version>
        </dependency>
    
    
    com.fasterxml.jackson.core
    杰克逊数据绑定
    2.6.5
    
    不确定这是否对使用scala 2.12的sbt项目有问题的人有帮助。输入jackson-module-scala_2.11不太有效。有一个版本的jackson模块scala 2.6.7具有scala 2.12版本

    build.sbt中的以下行起作用

    dependencyOverrides ++= {
      Seq(
        "com.fasterxml.jackson.module" %% "jackson-module-scala" % "2.6.7.1",
        "com.fasterxml.jackson.core" % "jackson-databind" % "2.6.7",
        "com.fasterxml.jackson.core" % "jackson-core" % "2.6.7"
      )
    }
    

    这解决了spark 2.4.5的问题

    您为我节省了大量时间!谢谢最后一位(添加显式的
    jackson模块scala
    依赖项)是最好的选择,因为它允许您同时使用任意版本的jackson和scala,而不是任由特定版本的scala默认的任何jackson版本支配。
    Below is the combination that worked for me .
    
     aws-java-sdk-1.7.4.jar
     hadoop-aws-2.7.3.jar
     joda-time-2.9.6.jar
     hadoop-client-2.7.3-sources.jar
     hadoop-client-2.7.3.jar
     hadoop-client-2.6.0-javadoc.jar
     hadoop-client-2.6.0.jar
     jets3t-0.9.4.jar
     jackson-core-2.10.0.jar
     jackson-databind-2.8.6.jar
     jackson-module-scala_2.11-2.8.5.jar
     jackson-annotations-2.8.7.jar
    
    dependencyOverrides ++= {
      Seq(
        "com.fasterxml.jackson.module" %% "jackson-module-scala" % "2.6.7.1",
        "com.fasterxml.jackson.core" % "jackson-databind" % "2.6.7",
        "com.fasterxml.jackson.core" % "jackson-core" % "2.6.7"
      )
    }