1. 程式人生 > >Ubuntu+Spark+IDEA+SBT+scala專案搭建流程記錄

Ubuntu+Spark+IDEA+SBT+scala專案搭建流程記錄

環境配置:

自行配置好IDEA、jdk

在spark官網下載spark-2.1.0-bin-hadoop2.7.tgz並解壓,執行spark-shell檢驗是否可用

IDEA中新增SBT、scala外掛

學習步驟建議:儘管網上很多寫好的演算法程式碼,spark初學者還是應從基本操作學起。否則用別人的程式碼跑,報錯都不知道錯在哪裡

1.在spark-shell中嘗試簡單的scala程式碼實現

2.用IDEA+SBT練習簡單的Helloworld列印程式碼

3.用IDEA+SBT完成簡單的jar打包練習,並在Spark本地模式執行成功

4.繼續進階....

正文:

1.IDEA中通過scala-SBT新建專案

//注意scala-sdk版本要和spark版本對應.

//IDEA自帶外掛版本是2.12.x,本文選擇scala-2.11.x和spark2.1.0匹配

//不知道是不是必須這樣。但是嘗試其他版本會報錯

//推薦使用SBT建立專案,最保險。我試過用scala-IDEA建專案,再自己修改目錄、匯入jar,會報object xxx is not a member of org.apache.spark.xxx這樣的錯

2.修改build.sbt檔案

name := "SBTassemblyJar"

version := "1.0"

scalaVersion := "2.11.0"

libraryDependencies += "org.apache.spark" %% "spark-core" % "2.1.0"

libraryDependencies += "org.apache.spark" %% "spark-mllib" % "2.1.0"

libraryDependencies += "org.apache.spark" %% "spark-mllib-local" % "2.1.0"

resolvers += "Akka Repository" at "http://repo.akka.io/releases/"

//注意:每行之間要有空行
//如果程式碼中用到MLlib則一定要在此處標註libraryDependencies
//SBT的作用和Maven類似,不需要再自己匯入jar包。我自己匯入了MLlib包,反而報錯

3.在src/main/scala目錄下新建object型別scala檔案,寫入程式碼

//此處記錄一個遇見的問題
//前後程式碼略 
val testData = sc.textFile("file:///home/liang/IdeaProjects/SBTassemblyJar/ALS/test.data")
//用textFile讀取本地檔案時
//1.要標明“file://”
//2.寫絕對路徑時,不要寫成“/home/IdeaProjects/..”會報錯找不到目錄


4.在IDEA的終端輸入sbt package命令,顯示“Done package”
//注意:不需要用IDEA對專案打包/編譯/run
5.到projectname/target/scala目錄下複製新打包好的jar包,貼上到spark的目錄下

6.在終端輸入命令

./bin/spark-submit --class "test" ./target/scala/sbtassemblyjar.jar