1. 程式人生 > >Windows上IDEA搭建最新Spark2.4.3原始碼除錯的開發環境

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裡面的屬性,裡面預設是3.5.4,需要改成自己maven的版本,比如我電腦是3.5.2。

電腦上的maven版本可以通mvn --version這個命令檢視。

比如我的電腦就是3.5.2,那麼相應的pom.xml裡面的就改成3.5.2 。

如果不修改的話,編譯的時候是會報錯的。

第二個要修改的地方是,修改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.總結

總結起來,就是先編譯,再匯入,最後執行。

這個過程說起來簡單,不過其實有些坑卻很容易讓人半途而廢,有些坑我已經踩過了,希望能幫到你們:)

如果你在這個過程中出現什麼問題無法解決,也歡迎在本篇下留言,有空的話我也會幫忙看看的~

以上