使用 SBT 構(gòu)建 Spark Application

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 文件中字符 ab 出現(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ì)觀察哦。_

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末胶惰,一起剝皮案震驚了整個(gè)濱河市傻工,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌孵滞,老刑警劉巖中捆,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異坊饶,居然都是意外死亡泄伪,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進(jìn)店門匿级,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蟋滴,“玉大人,你說我怎么就攤上這事痘绎〗蚝” “怎么了孤页?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵尔苦,是天一觀的道長。 經(jīng)常有香客問我散庶,道長蕉堰,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任悲龟,我火速辦了婚禮屋讶,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘须教。我一直安慰自己皿渗,他們只是感情好斩芭,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著乐疆,像睡著了一般划乖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上挤土,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天琴庵,我揣著相機(jī)與錄音,去河邊找鬼仰美。 笑死迷殿,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的咖杂。 我是一名探鬼主播庆寺,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼诉字!你這毒婦竟也來了懦尝?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤壤圃,失蹤者是張志新(化名)和其女友劉穎陵霉,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體埃唯,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡撩匕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了墨叛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片止毕。...
    茶點(diǎn)故事閱讀 39,795評論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖漠趁,靈堂內(nèi)的尸體忽然破棺而出扁凛,到底是詐尸還是另有隱情,我是刑警寧澤闯传,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布谨朝,位于F島的核電站,受9級特大地震影響甥绿,放射性物質(zhì)發(fā)生泄漏字币。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一共缕、第九天 我趴在偏房一處隱蔽的房頂上張望洗出。 院中可真熱鬧,春花似錦图谷、人聲如沸翩活。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽菠镇。三九已至冗荸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間利耍,已是汗流浹背蚌本。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留堂竟,地道東北人魂毁。 一個(gè)月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓玻佩,卻偏偏與公主長得像出嘹,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子咬崔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容