Windows上IDEA搭建最新Spark2.4.3原始碼除錯的開發環境
相信很多同學都想通過閱讀一些框架的原始碼,來提高自己的程式碼能力,但往往在第一步,搭建環境的時候就碰了壁。
本篇就來介紹下如何在Windows下,將最新版的Spark2.4.3編譯,並匯入到IDEA編譯器中。最後通過在IDEA執行Spark自帶的一共Example程式碼結尾。
1.搭建Spark原始碼環境所需準備
搭建Spark原始碼環境所需要準備的一些東西需要先準備好。這裡也有我踩過的一些坑,我也會一併介紹。
首先需要先下載maven,並將maven的源地址修改為阿里源,相信很多同學都已經配置好maven了,這裡簡單提下,maven源地址在國外,不改成阿里源,那在下載依賴的時候,那速度會讓你懷疑人生的。
然後下載下scala2.11.8/scala2.11.12,因為目前spark似乎還不支援2.12+,所以需要scala2.11+,至於2.11.8還是2.11.12,應該沒什麼影響,不過我自己機器上是2.11.8就是。
下載spark原始碼,不過不能直接github到spark的倉庫裡面直接下載,目前倉庫裡面的是3.+的測試版,應該要到releases裡面去找。
不過我已經幫你們把那個連結找到了,複製到瀏覽器地址就有下載頁。
https://github.com/apache/spark/releases/tag/v2.4.3
下載完後解壓,準備工作就算做完了。
2.編譯Spark原始碼
直接匯入專案是不行的,因為有些檔案需要先編譯才會產生,不過要編譯環境也不難,之前不是已經配置過的maven嘛。將下載好的spark2.4.3解壓,進入到其目錄,開啟cmd,執行如下命令就行
mvn -T 4 -DskipTests clean package
這裡要注意一下,spark2.4.3目錄下的pom.xml檔案,有兩個地方需要修改。第一個是pom.xml裡面的
電腦上的maven版本可以通mvn --version這個命令檢視。
比如我的電腦就是3.5.2,那麼相應的pom.xml裡面的
如果不修改的話,編譯的時候是會報錯的。
第二個要修改的地方是,修改pom.xml檔案中的<scala.version>屬性,預設是2.11.12,需要修改成自己電腦中的scala版本,這個下載的時候應該就會選擇,不多介紹。
如果<scala.version>和你電腦上的scala版本不一致的話,會出現下面的錯誤:
Error:scalac: Scala compiler JARs not found
另外說一句,spark原始檔中有多個pom.xml,只需要改根目錄下的pom.xml檔案就可以了。完成修改後,就能開始編譯了。
對了,編譯的時候會比較慢,而且編譯的時候也會佔用電腦比較多的資源,建議睡覺前編譯:)
3.匯入
編譯完成後,現在就可以匯入到IDEA裡面了,直接
open => ${spark2.4.3}_path/pom.xml => Open as Project
匯入後先彆著急,需要先改一下IDEA的maven配置,
File => Setting => 直接搜尋maven => 更改Maven home directory
即更改如圖所示的地方,
因為IDEA會有自帶的maven,需要改成電腦上自己安裝的,否則因為你是用自己電腦上maven編譯的,這時候用IDEA的maven來處理的話,某些依賴會報以下錯誤:
Library Maven: has broken classes path:
其實就是找不到啦。
OK,匯入成功之後,別急,還有最後一個地方需要修改。
Menu -> Run -> Edit Configurations -> 點左上的 + -> Application
在VM options: 裡面,加上-Dspark.master=local。這個的作用是讓spark直接在本機啟動。
配置到這裡就結束了,接下來可以執行一個example看看了。
到examples -> src -> scala -> LogQuery -> 右鍵 Run
就能成功看到運行了第一個示例spark程式了。
4.總結
總結起來,就是先編譯,再匯入,最後執行。
這個過程說起來簡單,不過其實有些坑卻很容易讓人半途而廢,有些坑我已經踩過了,希望能幫到你們:)
如果你在這個過程中出現什麼問題無法解決,也歡迎在本篇下留言,有空的話我也會幫忙看看的~
以上