[英]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.