关于hadoop 2.2.0 maven依赖性的火花0.9.1

时间:2014-05-29 16:52:41

标签: java maven hadoop apache-spark

我在pom.xml中设置了Apache Spark maven依赖关系,如下所示

    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.10</artifactId>
        <version>0.9.1</version>
    </dependency>

但我发现此依赖项使用“ hadoop-client-1.0.4.jar ”和“ hadoop-core-1.0.4.jar ”,以及我运行我的程序我收到错误“ org.apache.hadoop.ipc.RemoteException:服务器IPC版本9无法与客户端版本4进行通信”,这表明我需要从1.0切换hadoop版本。 4到2.2.0。

更新

以下解决方案是解决此问题的正确方法吗?

    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.10</artifactId>
        <version>0.9.1</version>
        <exclusions>
            <exclusion> 
                <groupId>org.apache.hadoop</groupId>
                <artifactId>hadoop-core</artifactId>
            </exclusion>
            <exclusion> 
                <groupId>org.apache.hadoop</groupId>
                <artifactId>hadoop-client</artifactId>
            </exclusion>
        </exclusions> 
    </dependency> 
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-client</artifactId>
        <version>2.2.0</version>
    </dependency> 

非常感谢你的帮助。

2 个答案:

答案 0 :(得分:2)

为您的Hadoop版本重新编译Spark,请参阅&#34;关于Hadoop版本的注意事项&#34;在这里:http://spark.apache.org/docs/0.9.1/。他们方便地举例说明2.2.0

SPARK_HADOOP_VERSION=2.2.0 sbt/sbt assembly

这将创建一个新jar,$SPARK_HOME/assembly/target/scala-2.10/spark-assembly-*jar,您需要将其包含在您的pom.xml中(而不是从在线jar中排除Hadoop)。

如果您已经托管了自己的存储库(例如在Nexus上),那么请将其上传到那里(这就是我所做的,而且效果很好)。如果由于某种原因您无法上传到任何存储库,请使用Maven的install:install-file或其中一个答案Maven: add a dependency to a jar by relative path

答案 1 :(得分:1)

Spark 1.2.0依赖于hadoop 2.2.0是默认的。 如果你可以将你的火花依赖性更新为1.2.0(或更新),这将解决问题。