Spark初體驗(2)--WordCount詳解

WordCount代碼如下:

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

/**
 * Created by zhangph on 2015/11/25.
 */

object WordCount {
  def main (args: Array[String]) {
    if(args.length < 1){
      System.err.println("Usage: <file>")
      System.exit(1);
    }
    val conf = new SparkConf();
    val sc = new SparkContext(conf)
    val line = sc.textFile(args(0))    
    val result = line.flatMap(_.split(" ")).map(x => (x(1), 1)).reduceByKey(_+_)
    //result.collect().foreach(println)
    result.saveAsTextFile(args(1))
    sc.stop()
  }
}
val line = sc.textFile(args(0))  

使用textFile函數將文件轉換爲一個RDD,該函數採用Hadoop中的TextInputFormat解析輸入數據,textFile中的每個Hadoop Block相當於一個RDD分區。

val result = line.flatMap(_.split(" ")).map(x => (x(1), 1)).reduceByKey(_+_)

flatMap將加載的數據使用空格分割後生成新的RDD;
map將每條記錄加1之後生成新的RDD;
reduceByKey將key相同的關鍵字的數據集合到一起進行函數運算。

result.collect().foreach(println)
result.saveAsTextFile(args(1))

Actions 算子
第一句是將MapReduce的結果先toArray然後再輸出每個元素;
第二句是將結果寫入到文件中。

The only way to survive was to enjoy the good moments and not dwell too much on the bed.

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