1. 程式人生 > >IntelliJ IDEA開發Spark、打JAR包

IntelliJ IDEA開發Spark、打JAR包

清明假期折騰了兩天,總結了兩種方式使用IDE進行spark程式,記錄一下:

第一種方法比較簡單,兩種方式都是採用SBT進行編譯的。

注意:本地不需要安裝Scala程式,否則在編譯程式時有版本相容性問題。

一、基於Non-SBT方式

建立一個Scala IDEA工程

wKioL1Uw_W6RTtXzAADv8hogz8w055.jpg

我們使用Non-SBT的方式,點選“Next”

wKioL1Uw_biRUEB1AAGcmEwvV7E233.jpg

命名工程,其他按照預設

wKiom1Uw_KDQYIGlAAGRVxi3MMs169.jpg

點選“Finish”完成工程的建立

wKiom1Uw_NrBpqj5AAEQMJ0boUU026.jpg

修改專案的屬性

wKioL1Uw_lrSBokLAAIZ4fEOMCY459.jpg

首先修改Modules選項

wKiom1Uw_S2Br-RlAAGxDLlS1PE811.jpg

在src下建立兩個資料夾,並把其屬性改為source

wKioL1Uw_q-STTmvAAIBzio05jU421.jpg

下面修改Libraries

wKiom1Uw_ZGgDh87AAGaa3ZcNZo061.jpg

將Spark開發需要的jar包導進來

wKioL1Uw_wOwSETZAAJWLRmQrpQ623.jpg

加入後:

wKioL1Uw_yLAeabkAAFXMb20-k8196.jpg

匯入包完成後,在工程的scala下面建立一個package

wKioL1Uw_z_h2uTKAAGsxUhzL30651.jpg

建立一個Object物件

wKiom1Uw_grxuoo4AAGXviNcKQw217.jpg

構建Spark Driver程式碼

wKiom1Uw_i-A-livAAG7j_bnMEs430.jpg

該程式是對搜狗日誌的處理程式碼

接下來進行打包,使用Project Structure的Artifacts

wKioL1Uw_6ODQug7AAECG7Txdu8331.jpg

使用From modules with dependencies

wKiom1Uw_m7zsayvAADwz1cykkI686.jpg

wKioL1Uw_9mTLkG1AADiAufDfUA742.jpg

選擇Main Class

wKiom1Uw_qKgh1ixAADxuLhxrNI042.jpg

wKioL1UxABbgGWegAAFxfcRbbgg320.jpg

點選“OK”

wKioL1UxADTgc021AAGxXZGxmuI537.jpg

把名稱改為FirstSparkAppJar

wKiom1Uw_vzTmRrdAAJFnvfO97g915.jpg

因為每臺機器上都安裝了Scala和Spark,所以可以把Scala和Spark相關的jar檔案都刪掉

wKioL1UxAG2iD9sqAAFhP8reeY0753.jpg

接下來進行Build

wKiom1Uw_zihPn3dAAGI_9Z49rI498.jpg

選擇“Build Artifacts”

wKiom1Uw_1nAAaUxAAB1Rl4ca0w127.jpg

第一次選擇Build,以後同一個工程要選擇Rebuild,然後等待編譯完成

wKioL1UxAMuz2YFaAABtCTV6Y8o755.jpg

下面使用spark-submit執行程式

wKioL1UxAOPh4P5fAAEHPCkIfB4979.jpg

最後任務執行完成

wKiom1Uw_6uC3GgwAAX9_Yv1lcs243.jpg

二、基於SBT方式

開發工具下載

Spark開發需要以下開發編譯工具:

1、Scala IDE:本文以IntelliJ IDEA為例進行開發,下載地址:

2、SBT(Simple Build Tool)編譯工具下載:

下載安裝後,在DOS下執行sbt命令下載其所需要的jar包:

wKioL1UxAYLCmfo4AAARGOs6v50207.jpg

預設jar包(.idea-build、.ivy2、.sbt)下載到C盤使用者目錄下

(注意:使用命令sbt進行下載時要確保網速,最好使用代理下載)

開發工具配置

1、IntelliJ IDEA開發配置:

(1)下載Scala外掛:選擇Configure下的Plugins進入下圖

wKioL1UxAfWj_cBXAAJ78Hyzj-4801.jpg選擇Install JetBrains plugin,搜尋Scala進行下載。

(2)建立基於SBT的Scala工程:

wKiom1UxAM_REor9AAFW7Qe8sfM628.jpg

(3)設定工程名稱以及Scala和SBT版本:

wKioL1UxAlLyBEBJAAJAjXx9JUU478.jpg注意:

  1. 最好將Download兩個選項取消,否則會覆蓋之前使用者目錄下的SBTjar包,造成編譯不通過等錯誤

  2. SBT和Scala的版本號在C盤使用者目錄下可以看出:

    C:\Users\使用者\.sbt\boot\scala-2.10.4\org.scala-sbt\sbt\0.13.8

    這裡可以一次性設定正確,也可以後續修改配置檔案(build.sbt修改scala版本,build.properties修改sbt版本)進行修改同步。

  3. 工程路徑不要使用中文,否則即使編譯成功打成jar包也無法執行。

(4)基於SBT的Scala程式對工程的結構要求比較苛刻,需要建立如下目錄結構:

wKiom1UxAViwFAJRAAIvAPorWiY092.jpg

(5)新增Spark外掛:

wKioL1UxAs7DpdfGAAHq6NSZnQE567.jpg注意:同時該外掛需要新增到lib目錄下(作業系統複製即可)

準備工作完成,下面進行Spark程式開發

編寫程式碼

下面以類wordcount程式為例:

編寫Spark程式:

wKioL1UxAxeQl_4FAAK1eT5vwAc317.jpg

請不要使用InteiiJ IDEA進行編譯(漢字導致後面編譯不過去)

編譯和執行

(1)使用SBT進行編譯和打包:

DOS下進入工程目錄下,使用sbt命令進行編譯和打包:

wKiom1UxAfXDk-EOAACqxPsUF6A456.jpg

wKiom1UxAgmTLLs3AADnj-Sjico004.jpg

預設打的jar在工程目錄test\target\scala-2.10下

(2)將jar包上傳到伺服器執行:

使用命令:

spark-submit --class test--master yarn test_2.10-0.1-SNAPSHOT.jar 100

更多的引數詳見官方文件

wKioL1UxA5zQQcPFAAMbGsPlGXU256.jpg