一、源碼下載
spark源碼下載:http://spark.apache.org/downloads.html
下載各個歷史版本的源碼包在這里下載:https://archive.apache.org/dist/spark/
我下載的是:spark-2.1.0.tgz
二、編譯源碼
1、編譯環境:MacBookPro10.14.5
java version: 1.8.0
scala version: 2.11.8
maven version: 3.3.9
2、解壓源碼包和編譯: tar -zxvf spark-2.1.0.tgz
進入spark-2.1.0目錄進行編譯:
./build/mvn -Phadoop-2.7 -Pyarn -Dhadoop.version=2.7.3 -Phive -Phive-thriftserver clean package -Dmaven.test.skip=true
參數介紹:
-Phadoop:Hadoop版本號,默認版本2.6.5;
-Dhadoop.version: 同-Phadoop;
-Pyarn :是否支持Hadoop YARN;
-Phive:是否在Spark SQL 中支持hive,hive默認版本1.2.1;
-Phive-thriftserver:同-Phive;
-Dmaven.test.skip=true:不執行測試用例,也不編譯測試用例類;
三、遇到的問題
1、下載源碼包失敗,進行spark源碼編譯時,會下載一些對應的依賴包,如下圖所示下載到22.2%就失敗了
解決方法:
編輯./bulid/mvn,修改對應的鏈接地址:
把這兩個鏈接:
curl --progress-bar -L http://downloads.typesafe.com/scala/2.11.8/scala-2.11.8.tgz
curl --progress-bar -L http://downloads.typesafe.com/zinc/0.3.15/zinc-0.3.15.tgz
修改成:
curl --progress-bar -L http://downloads.lightbend.com/scala/2.11.8/scala-2.11.8.tgz
curl --progress-bar -L http://downloads.lightbend.com/zinc/0.3.15/zinc-0.3.15.tgz
2、編譯到一半就失敗了,報錯如圖:
解決方法:
進入maven的倉庫目錄:
cd ~/.m2/repository/javax/validation/validation-api/1.1.0.Final/
刪除錯誤的jar包,重新編譯的時候maven會重新下載對應的jar包。
成功編譯如下圖:
編譯好的源碼,直接導入IDEA中就可以調試和閱讀spark源碼了。