1. 程式人生 > 實用技巧 >spark 詞頻統計

spark 詞頻統計

spark 詞頻統計

package com.imooc.bigdata.chapter02

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

/**
  * 詞頻統計案例
  * 輸入:檔案
  * 需求:統計出檔案中每個單詞出現的次數
  * 1)讀每一行資料
  * 2)按照分隔符把每一行的資料拆成單詞
  * 3)每個單詞賦上次數為1
  * 4)按照單詞進行分發,然後統計單詞出現的次數
  * 5)把結果輸出到檔案中
  * 輸出:檔案
  */
object SparkWordCountApp {

  /**
    * master: 執行模式,local
    *
    */
  def main(args: Array[String]): Unit = {
    val sparkConf = new SparkConf().setMaster("local").setAppName("SparkWordCountApp")
    val sc = new SparkContext(sparkConf)


    // Spark特性:提供了80+高階API
    val rdd = sc.textFile("E:\\06-work\\03-java\\01-JavaCodeDome\\SparkSqlCode\\sparksql-train\\data\\input.txt")

    /**
      * 結果按照單詞的出現的個數的降序排列
      */

    rdd.flatMap(_.split(" ")).map(word => (word, 1))
      .reduceByKey(_+_).map(x => (x._2, x._1)).sortByKey(false)
        .map(x=> (x._2, x._1))
      .saveAsTextFile("E:\\06-work\\03-java\\01-JavaCodeDome\\SparkSqlCode\\sparksql-train\\data\\out")
      //.collect().foreach(println)

      //.sortByKey().collect().foreach(println)
        //.saveAsTextFile("file:///Users/rocky/IdeaProjects/imooc-workspace/sparksql-train/out")
      //.collect().foreach(println)

    //rdd.collect().foreach(println)

    sc.stop()
  }
}