Windows上IDEA搭建最新Spark2.4.3源碼閱讀及調試的開發環境

相信不少同窗都想經過閱讀一些框架的源碼,來提升本身的代碼能力,但每每在第一步,搭建環境的時候就碰了壁。git

本篇就來介紹下如何在Windows下,將最新版的Spark2.4.3編譯,並導入到IDEA編譯器中。最後經過在IDEA運行Spark自帶的一共Example代碼結尾。github

1.搭建Spark源碼環境所需準備

搭建Spark源碼環境所須要準備的一些東西須要先準備好。這裏也有我踩過的一些坑,我也會一併介紹。apache

首先須要先下載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裏面去找。
github上spark下載頁maven

不過我已經幫大家把那個連接找到了,複製到瀏覽器地址就有下載頁。測試

https://github.com/apache/spark/releases/tag/v2.4.3spa

下載完後解壓,準備工做就算作完了。scala

2.編譯Spark源碼

直接導入項目是不行的,由於有些文件須要先編譯纔會產生,不過要編譯環境也不難,以前不是已經配置過的maven嘛。將下載好的spark2.4.3解壓,進入到其目錄,打開cmd,運行以下命令就行3d

mvn -T 4 -DskipTests clean package

這裏要注意一下,spark2.4.3目錄下的pom.xml文件,有兩個地方須要修改。第一個是pom.xml裏面的 屬性,裏面默認是3.5.4,須要改爲本身maven的版本,好比我電腦是3.5.2。
pom文件中的maven-version

電腦上的maven版本能夠通mvn --version這個命令查看。
查看maven版本

好比個人電腦就是3.5.2,那麼相應的pom.xml裏面的 就改爲3.5.2 。

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

第二個要修改的地方是,修改pom.xml文件中的<scala.version>屬性,默認是2.11.12,須要修改爲本身電腦中的scala版本,這個下載的時候應該就會選擇,很少介紹。

pom文件中的scala.version

若是<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版本

由於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程序了。

運行LogQuery結果

4.總結

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

這個過程提及來簡單,不過其實有些坑卻很容易讓人半途而廢,有些坑我已經踩過了,但願能幫到大家:)

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

以上!

相關文章
相關標籤/搜索