搭建scala 開發spark程序環境及實例演示

上一篇博文已經介紹了搭建scala的開發環境,現在進入正題。如何開發我們的第一個spark程序。

  1. 下載spark安裝包,下載地址http://spark.apache.org/downloads.html(因爲開發環境需要引用spark的jar包)

    我下載的是spark-2.1.0-bin-hadoop2.6.tgz,因爲我的scalaIDE版本是scala-SDK-4.5.0-vfinal-2.11-win32.win32.x86_64.zip

    最好,IDE版本和spark版本要匹配,否則,開發程序的時候,可能會包引用的jar包錯誤等等。

  2. new 一個 scala project,然後new 一個 scala object

    wKioL1ilQRvBEZc1AAGL5qe41Lc548.png-wh_50

代碼如下:

package com.test

import org.apache.spark.SparkContext
import org.apache.spark.SparkConf
 
 /**
  * 統計字符出現次數
  */
 object WordCount {
   def main(args: Array[String]) {
     if (args.length < 1) {
       System.err.println("Usage: <file>")
       System.exit(1)
     }
 
     val conf = new SparkConf();//創建SparkConf對象
     conf.setAppName("Wow,My First Spark Programe");//設置應用程序的名稱,在程序運行的監
     conf.setMaster("local")//此時,程序在本地運行,不需要安裝Spark集羣

     val sc = new SparkContext(conf);//創建SparkContext對象,通過傳入SparkConf實例
//     val lines = sc.textFile(args(0));
     val lines = sc.textFile(args(0));
     val words = lines.flatMap{line => line.split(" ")};//對每一行的字符串進行單詞拆
     val pairs = words.map{word => (word,1)};
    
     val wordCounts = pairs.reduceByKey(_+_);//對相同的Key,進行Value的累計(包括Local和Reducer級別同時Reduce)
 //    val wordCounts = pairs.reduce((x,y)=>(x.));
     wordCounts.foreach(wordNumberPair => println(wordNumberPair._1 + " : " +wordNumberPair));
     
 
//     line.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_+_).collect().foreach(println)
 
     sc.stop()
   }
 }

3.配置JDK1.8 和引入spark jar包

spark的jar包是 spark安裝包解壓之後jars目錄裏面的jar包,可以把這個目錄下面的所有jar包都引入工程

wKioL1ilQlqAlZPCAADNiBW6hGE953.png-wh_50

wKiom1ilQneiSeRIAAFFf8zch70476.png-wh_50

4.run Configurations,配置運行入參,

因爲 這個代碼是讀入一個文本,在hadoop文件系統,可以spark-submit的時候傳入這個參數,在windows 本地開發環境可以在eclipse裏面配置這個參數,見下面的圖

val lines = sc.textFile(args(0));

wKioL1ilQ9Tgn09CAAEV-szo83o173.png-wh_50

4.入參文本及運行結果

入參文本:

wKioL1ilRLHzDrOQAABcZQpBlMU522.png-wh_50

run scala Application運行結果

wKiom1ilRRCinB5hAAEqN3BY2fQ144.png-wh_50

ok,開發環境搭建完畢。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章