1. 程式人生 > >Spark開發環境配置(windows/Intellij IDEA 篇)

Spark開發環境配置(windows/Intellij IDEA 篇)

Intellij IDEA是一個蠻不錯的IDE,在java/scala/Groovy領域深得人心。筆者之前使用的是Eclipse那一套開發環境,雖然也不錯,但忍不住好奇心的驅使,折騰了一下IDEA,發現寫起Spark程式來,“哎呦,不錯喲!”,故總結一下在windows系統中的配置過程(在mac下的配置其實更簡單一些),自己琢磨時還是費了點勁的,網上各種教程新舊正誤繁雜,好不麻煩,加上筆者工作中最煩的就是各種軟體的下載安裝配置,有時一個配置沒做對,就浪費好長時間。故而將自己摸索過程總結一下,方便Spark愛好者參考。

配置前提

  1. JDK安裝。 請自行前往oracle官方網站下載安裝,並在command命令列視窗確認java -version 可以返回版本號,否則的話要去系統環境變數設定位置確認是否java已經被新增到PATH中
  2. Scala下載安裝。移步官網 http://www.scala-lang.org/ 下載並安裝即可。同第1步,要在command命令列下確認敲擊scala可以進入互動式命令視窗,否則請確認環境變數的配置。
  3. spark原始碼下載。官方網站 http://spark.apache.org/downloads.html 上提供有各種hadoop版本的預編譯版spark程式碼,理論上要根據你在用的hadoop版本來相應選擇,本文僅作配置說明,故任選其中一即可。筆者下載的是spark1.5, 對應hadoop2.6預編譯的版本,解壓即可。

配置開始

1. 安裝IDEA 的scala外掛

        步驟如下圖所示,筆者已經安裝過,故右方顯示已經存在該外掛。第一次安裝時,在plugins處輸入scala關鍵詞搜尋,在聯網環境下點選安裝即可。

    

2. 建立專案並匯入相應依賴包

    如下圖指引,新建專案時,選擇scala,然後點選“下一步”,這裡Project SDK是java的jdk,如果沒有預設加載出來,點選New,手工定位到jdk的目錄提交上來即可。Scala SDK那裡如果預設沒有加載出來,點選Create,在彈出的視窗中安預設勾選的System點選OK即可。



此時,俺的專案長成如下這個模樣:


接下來,我們匯入上面下載好的spark原始碼。按下圖指引操作, 在+號處選擇java, 然後定位到你上面步驟中將spark程式解壓到的目錄位置,選擇lib目錄下的spark-assembly-1.5.0-hadoop2.6.0.jar檔案,確認。



此時,俺的專案依賴的外部庫檔案中,就多出了spark原始碼這個檔案,如下圖所示:


程式開發

    搞好了基礎配置,就開始coding吧。

    這裡先提幾個細節。如果你發現在src目錄上右鍵找不到scala class這樣的檔案建立選項的話,說明src這個資料夾的屬性不對,一定要確認下圖所示src被選中為Sources資料夾屬性。


第2個細節,這裡建立類檔案時,一般大家喜歡按目錄結構來,比如建立main/scala/或main/java等這樣的子資料夾,當然這樣方便了程式碼管理,但是筆者在這樣操作時,後面編譯檔案時就報錯了。google半天,發現不少人遇到同樣問題,刪除這些子資料夾,直接在src下建立類檔案,就OK了。

     finally, 終於進入編碼環節了。本文為示例方便,直接拿spark原始碼中的example程式-SparkLR來講解(這些案例程式位於你的spark解壓目錄\examples\src\main\scala\org\apache\spark\examples)。在src資料夾上右擊選擇scala class, Kind這裡選擇Object,然後把上述案例程式貼上進去。


截止目前,我們的專案長成如下這個樣子:


然後,還要再配置一下輸出,也就是說一會你寫的程式碼編譯打包成jar包,放到哪裡去,起個啥名字。操作如下:



點選OK後,就配置好了輸出形式。

編譯&打包

    build -> build artifacts -> spark_dev:jar -> build, 然後就開始編譯了,在最下面可以看到進行的狀態。如果沒有報錯,就是成功啦。

    


到輸出JAR包的目錄下去看看,發現確實成功生成了一個jar檔案。【特別提示:此處打好的jar包如果要提交到數平的Spark叢集上執行,請開啟此jar包檔案,觀察其中是否有一個scala的資料夾,刪除之!否則可能與線上的scala版本衝突】

到此,整個配置、開發、編譯過程就算成功完成了。至於提交執行,就不在本文討論範圍內了,有時間的話再撰文記錄吧。


結束語

    開發環境的配置算是程式設計師工作中一項最boring且沒有成就感的事情了,尤其是各種IDE的那麼多功能點,滑鼠點啊點,有時候也不知道邏輯關係是啥。故而如果本文能有幸為各位提供方便,則不枉俺費力總結一通了。好啦,就到這裡了。