Spark(Scala)-示例程序

1.版本

  • system: windows10
  • jdk: 1.8.0_141
  • scala: 2.10.5
  • spark: spark-2.0.2-bin-hadoop2.6
  • IntelliJ: 15.0.6

2.基本環(huán)境安裝


3.配置ssh免密登錄

  • cd ~進(jìn)入用戶目錄

  • ssh-keygen生成相關(guān)文件,一路回車即可

  • cd ~/.ssh進(jìn)入ssh目錄,如果沒有mkdir .ssh創(chuàng)建一個再生成文件

  • touch authorized_keys創(chuàng)建公鑰保存文件

  • cat id_rsa.pub > authorized_keys密鑰拷貝到公鑰

  • chmod 600 authorized_keys附加權(quán)限

    生成后的文件

  • ssh localhost登錄驗證

    登錄成功


4.創(chuàng)建Spark項目

創(chuàng)建項目
選擇創(chuàng)建Scala項目,選擇SBT作為打包工具,相當(dāng)于Java中的Maven
選擇對應(yīng)版本,第一次創(chuàng)建需要下載一些依賴會比較慢
創(chuàng)建成功后的項目結(jié)構(gòu)

5.示例程序編寫

  • 讀取文件,統(tǒng)計文件中每一個單詞出現(xiàn)的次數(shù)

  • 配置編寫程序需要的依賴,點擊右上角刷新,等待idea加載依賴到項目


    配置依賴,如果網(wǎng)絡(luò)狀況不好下載很慢,耐心等待
  • scala目錄下創(chuàng)建一個Scala Class

    創(chuàng)建Scala Class

  • 輸入Name,選擇Object創(chuàng)建

    創(chuàng)建Object

  • 編寫程序

import org.apache.spark.{SparkContext, SparkConf}

/**
  * author: shenke
  * date: 2018/12/1 20:46
  * description: 讀取文本文件內(nèi)容,統(tǒng)計每個單詞出現(xiàn)的次數(shù)
  * helloSpark.txt文本文件內(nèi)容示例:
  * hello Spark
  * hello World
  * hello Spark !
  */
object WordCount {

  def main(args: Array[String]) {
    // 創(chuàng)建Spark配置類并且指定名稱
    val conf = new SparkConf().setAppName("wordCount");
    
    // 創(chuàng)建Spark上下文對象,加載配置
    val sc = new SparkContext(conf);

    // 讀取指定文件內(nèi)容
    val input = sc.textFile("/usr/local/helloSpark"); 

    // flatMap空格拆分文件內(nèi)容,拆分后變成:hello,Spark,hello,World,hello,Spark,!
    val lines = input.flatMap(line => line.split(" "));

    // map把單詞轉(zhuǎn)換成key:value對的形式,轉(zhuǎn)換后變成:hello:1,Spark:1,hello:1,World:1,hello:1,Spark:1,!:1
    // reduceByKey對相同的key進(jìn)行reduce操作,這里累加key相同的value,操作后的結(jié)果:hello:3,Spark:2,World:1,!:1
    val count = lines.map(word => (word, 1)).reduceByKey { case (x, y) => x + y }

    // 計算結(jié)果保存到指定文件
    var output = count.saveAsTextFile("/usr/local/helloSparkRes") 

  }

}

6.編譯打包

  • 配置jar包


    配置jar包
配置jar包
選擇項目和Main Class,OK打包
選擇Build項目
Build項目
Build成功會生成MANIFEST.MF文件
同時在項目根目錄out目錄下會生成打包好的jar包
生成的jar包

7.啟動運行

  • 啟動集群
    cd /usr/local/spark-2.0.2-bin-hadoop2.6進(jìn)入spark安裝目錄
    ./sbin/start-master.sh啟動master
    jps查看master是否已啟動
    master已經(jīng)啟動

到安裝spark環(huán)境的虛擬機(jī)上訪問http://localhost:8080/查看啟動worker的地址信息

查看啟動worker的地址信息

./bin/spark-class org.apache.spark.deploy.worker.Worker spark://localhost:7077啟動worker,這里填寫剛才訪問web ui查看的address信息

jps查看worker是否已啟動

worker已經(jīng)啟動

yum -y install lrzsz安裝lrzsz
rz -be上傳jar

上傳jar包

./bin/spark-submit --master spark://localhost:7077 --class WordCount /usr/local/spark.jar提交作業(yè),指定同上的address,jarMain Class以及jarpath

  • 作業(yè)運行期間可以訪問http://localhost:4040/jobs/可以查看任務(wù)的執(zhí)行信息

    可以看到任務(wù)執(zhí)行相關(guān)信息

  • 作業(yè)執(zhí)行完畢后查看結(jié)果
    cd /usr/local/helloSparkRes進(jìn)入保存作業(yè)執(zhí)行結(jié)果的目錄
    生成了part-00000,part-00001,_SUCCESS三個文件,其中part-00000part-00001保存了作業(yè)的執(zhí)行結(jié)果
    cat part-00000
    cat part-00001

  • 分別輸出執(zhí)行結(jié)果


    作業(yè)執(zhí)行結(jié)果
  • 對比一下預(yù)測的結(jié)果是一致的


    編碼時預(yù)測的結(jié)果

`

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容