scalaを用いてローカルテストのSpark WordCountプログラムを開発する

1999 ワード

package com.yh.spark

import org.apache.spark.SparkConf
import org.apache.spark.SparkContext

object WordCount {
  def main(args: Array[String]): Unit = {
    /**
     *    :  Spark     SparkConf,  Spark          ,
     *        setMaster         Spark   Master URL,
     *      local,   Spark       。
     */
    val conf = new SparkConf //  SparkConf  
    conf.setAppName("wordCount") //         ,                
    conf.setMaster("local") //  ,       ,     Spark  
    
    /**
     *    :  SparkContext  
     * SparkContext Spark           ,     scala、java、Python,R  
     *      SparkContext。SparkContext    :   Spark              ,  
     * DAGScheduler,TaskScheduler、SchedulerBackend      Spark   Master     。
     * SparkContext   Spark              。
     */
    val sc = new SparkContext(conf)
    
    /**
     *    :        (HDFS、HBase、Local FS、DB、S3 )  SparkContext  RDD。
     * RDD        :        (HDFS)、  Scala  、   RDD  。    RDD       
     * Partitions,     Partition       Task     
     */
    val lines = sc.textFile("D://data//1.txt", 1)//
    
    /**
     *    :     RDD  Transformation    ,  map、filter         ,          。
     */
    /**
     * 4.1、                
     */
    val words = lines.flatMap { line => line.split(" ") } //                          flat     
    
    /**
     * 4.2、                   1,   word => (word,1)
     */
    val pairs = words.map { word => (word, 1) }
    
    /**
     * 4.3、          1                    
     */
    val wordCounts = pairs.reduceByKey(_+_) //    key,  value   
    
    wordCounts.foreach(map => println(map._1 +":"+ map._2))
    
    sc.stop()
  }
}