天天看點

spark在idea中本地如何運作?(處理問題NoSuchFieldException: SHUTDOWN_HOOK_PRIORITY)現象

spark在idea中本地如何運作?

使用pom寫了一個程式,發現出現下面的錯誤

之前以為是我本地沒有安裝spark的問題。後來我的同僚使用eclipse可以在本地運作一個spark的程式。于是反思是不是我的項目問題。

看這篇文章https://support.datastax.com/hc/en-us/articles/207038146-DSE-Spark-job-initialisation-returns-java-lang-NoSuchFieldException-SHUTDOWN-HOOK-PRIORITY-

說的是classPath裡面的Hadoop的jar包不要使用2.x的,需要使用内置的jar。

列印了classPath,把 /Users/yejianfeng/.m2/repository/org/apache 裡面的hadoop檔案夾改名了

看了下源碼,大概是說在/Users/yejianfeng/.m2/repository/org/apache/spark/spark-core_2.10/1.6.3/spark-core_2.10-1.6.3-sources.jar!/org/apache/spark/util/ShutdownHookManager.scala

下面有個代碼:

裡面先擷取FileSystem,然後再擷取FileSystem的SHUTDOWN_HOOK_PRIORITY屬性,而這個屬性在目前的FileSystem中并不存在。看起來是個版本問題,而且是org.apache.hadoop.fs.FileSystem的版本問題。

發現我的FileSystem版本在pom裡面已經設定的是2.7.1,檢視了下源碼,

public static final int SHUTDOWN_HOOK_PRIORITY = 10;

裡面有這個屬性。

使用ide的提示,我發現我的FileSystem被兩個引用了

很明顯,hadoop-core隻有到1.2.1 于是我就嘗試把hadoop-core從我的pom中移除,并且從mvn倉庫中移除。

問題解決

可以在本機運作spark讀取本地檔案了

本文轉自軒脈刃部落格園部落格,原文連結:http://www.cnblogs.com/yjf512/p/7699881.html,如需轉載請自行聯系原作者

繼續閱讀