相信很多同學都想通過閱讀一些框架的源碼,來提高自己的代碼能力,但往往在第一步,搭建環境的時候就碰了壁。
本篇就來介紹下如何在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里面去找。
不過我已經幫你們把那個鏈接找到了,復制到瀏覽器地址就有下載頁。
下載完后解壓,准備工作就算做完了。
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.總結
總結起來,就是先編譯,再導入,最后運行。
這個過程說起來簡單,不過其實有些坑卻很容易讓人半途而廢,有些坑我已經踩過了,希望能幫到你們:)
如果你在這個過程中出現什么問題無法解決,也歡迎在本篇下留言,有空的話我也會幫忙看看的~
以上!