在 Spark 分布式計(jì)算框架之環(huán)境搭建 這篇文章中,我們已經(jīng)成功的搭建起了 Spark
的運(yùn)行環(huán)境耕拷,并且在 spark-shell
中做了一些小嘗試舒帮,計(jì)算了一個(gè)文本文件中每一行的平均長度儿惫。但是,這怎么能滿足你呢列荔。你才不要在命令行敲來敲去敬尺,你要用華麗麗的 IDE,開發(fā)出可以在任何環(huán)境下運(yùn)行的 app
贴浙,這才是你想要的砂吞。好,現(xiàn)在就來滿足你崎溃。
安裝 SBT
SBT 之于 Scala 就像 Maven 之于 Java蜻直,用于管理項(xiàng)目依賴,構(gòu)建項(xiàng)目
下載
點(diǎn)擊這里下載 SBT
本文下載的是 sbt-0.13.13.tgz
$ wget https://dl.bintray.com/sbt/native-packages/sbt/0.13.13/sbt-0.13.13.tgz
解壓
將剛才下載的文件移動到 /opt/scala
目錄中
$ sudo mv sbt-0.13.13.tgz /opt/scala
進(jìn)入 /opt/scala
目錄
$ cd /opt/scala
解壓
$ sudo tar zxvf sbt-0.13.13.tgz
配置
打開配置文件 .bashrc
$ sudo vim ~/.bashrc
在文件末尾添加如下代碼:
############# SBT_CONFIG #############
export SBT_HOME="/opt/scala/sbt-launcher-packaging-0.13.13"
export PATH="$SBT_HOME/bin:$PATH"
驗(yàn)證
在終端輸入如下命令:
$ sbt -h
如果看到這樣的輸出則證明安裝成功:
Usage: [options]
-h | -help print this message
-v | -verbose this runner is chattier
-d | -debug set sbt log level to debug
-no-colors disable ANSI color codes
...
恩袁串。安裝好了概而,我要開始愉快的碼代碼了。_
少年囱修,你還是太天真了赎瑰。因?yàn)榇蠹叶级玫脑颍琒BT 下載依賴的速度極慢破镰。所以餐曼,在正式使用之前我們要給 SBT 動個(gè)小手術(shù) --- 換源压储。啊,多么痛的領(lǐng)悟晋辆。在此渠脉,先感謝一下我們的阿里媽媽宇整。
換源方式很簡單瓶佳,在家目錄下的 .sbt
目錄下新建 repositories
文件,內(nèi)容如下:
[repositories]
#local
public: http://maven.aliyun.com/nexus/content/groups/public/
typesafe:http://dl.bintray.com/typesafe/ivy-releases/ , [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly
ivy-sbt-plugin:http://dl.bintray.com/sbt/sbt-plugin-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]
sonatype-oss-releases
sonatype-oss-snapshots
如果家目錄下沒有 .sbt
目錄鳞青,請手動創(chuàng)建
寫一個(gè)獨(dú)立的 Spark App
先貼目錄結(jié)構(gòu)
$ find .
.
./simple.sbt
./src
./src/main
./src/main/scala
./src/main/scala/SimpleApp.scala
新建一個(gè)目錄霸饲,作為項(xiàng)目根目錄,目錄結(jié)構(gòu)如上
SimpleApp.scala
中的內(nèi)容如下:
/* SimpleApp.scala */
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
object SimpleApp {
def main(args: Array[String]) {
val logFile = "YOUR_SPARK_HOME/README.md"
val conf = new SparkConf().setAppName("Simple Application")
val sc = new SparkContext(conf)
val logData = sc.textFile(logFile, 2).cache()
val numAs = logData.filter(line => line.contains("a")).count()
val numBs = logData.filter(line => line.contains("b")).count()
println(s"Lines with a: $numAs, Lines with b: $numBs")
sc.stop()
}
}
這個(gè)程序用于統(tǒng)計(jì) README.md
文件中字符 a
和 b
出現(xiàn)的次數(shù)
注意:請將 YOUR_SPARK_HOME
替換為你的 Spark
安裝目錄路徑
simple.sbt
是項(xiàng)目的配置文件臂拓,內(nèi)容如下:
name := "Simple Project"
version := "1.0"
scalaVersion := "2.11.7"
libraryDependencies += "org.apache.spark" %% "spark-core" % "2.1.0"
注意空行
現(xiàn)在我們使用 sbt
將我們的項(xiàng)目打包
在項(xiàng)目根目錄下輸入如下命令:
$ sbt package
耐心等待打包完畢
最終你會看到如下輸出信息:
...
[info] Packaging {..}/{..}/target/scala-2.11/simple-project_2.11-1.0.jar
使用 spark-submit
運(yùn)行剛才編寫的程序
$ ~/apps/spark-2.1.0-bin-hadoop2.7/bin/spark-submit \
--class "SimpleApp" \
--master local[4] \
target/scala-2.11/simple-project_2.11-1.0.jar
...
Lines with a: 46, Lines with b: 23
輸出信息比較多厚脉,要仔細(xì)觀察哦。_