Spark源代碼下載地址:
http://spark.apache.org/downloads.html
下載后,直接用 Scala IDE 通過已存在的項目導入到Eclipse workspace中去,然后Eclipse會自動進行編譯。第一次編譯會報很多錯誤,不過總的來說,導致編譯錯誤的源頭有三個:
1、Scala編譯器版本錯誤
2、Eclipse Maven插件不能自動識別spark project的一些pom,報Plugin execution not covered by lifecycle configuration異常
3、一些項目,maven會自動生成scala和java文件,但是這些自動生成的代碼文件沒有配置在eclipse項目的classpath里。
針對第一種錯誤,比較簡單,對于每個scala項目,右鍵屬性選擇spark對應的scala編譯器版本。
當然spark代碼里的項目有幾十個,只能手工一個個設置了,比較傻,沒辦法,還不停的彈出對話框,不停地回車吧。
編譯的難點主要在第二種錯誤上,比如spark-sql項目的pom, 里面有個build-helper-maven-plugin,它下面的execution,eclipse maven插件無法識別,報Plugin execution not covered by lifecycle configuration異常,解決方案參見
https://www.eclipse.org/m2e/documentation/m2e-execution-not-covered.html,先使用 Eclipse
quick-fix選項自動修復,忽略此 maven goal,Eclipse 會為 pom.xml自動添加一段xml代碼,包含在 pluginManagement section中,里面有一段 <action><ignore/></action>,此處手動修改成
<action>
<execute>
<runOnIncremental>false</runOnIncremental>
</execute>
</action>
然后右鍵 maven update project 就OK了。
一共有5個project需要修改pom,如圖
修改pom后重新編譯,依舊會報一些錯誤,這些錯誤都是由于maven自動生成的java和scala代碼沒有添加到classpath里導致的編譯錯誤,只需要手工添加一下即可,需要手工添加項目有 spark-streaming-flume-sink 的 src_managed\main\compiled_avro 目錄 和 spark-sql 項目的 test\gen-java 目錄。
全部編譯好以后的截圖:

修改完以后,Spark代碼全部編譯下來大概耗時25分鐘左右(CPU 雙核 I7 4600)
原文地址:
http://www.tkk7.com/cnfree/archive/2016/11/08/431965.html