簡體   English   中英

關於hadoop 2.2.0 maven依賴性的火花0.9.1

[英]spark 0.9.1 on hadoop 2.2.0 maven dependency

我在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通信 ,這表明我需要將hadoop版本從1.0.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> 

非常感謝您的幫助。

為您的Hadoop版本重新編譯Spark,請參閱此處的“關於Hadoop版本的說明”: 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:通過相對路徑向jar添加依賴項

Spark 1.2.0依賴於hadoop 2.2.0是默認的。 如果你可以將你的火花依賴性更新為1.2.0(或更新),這將解決問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM