`

scala中的wordcount

 
阅读更多

package com.bjsxt.spark

import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.rdd.RDD
/**
 * 统计单词出现的次数。
 */
object WordCount {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf()
    conf.setMaster("local")
    conf.setAppName("wc")
    val sc = new SparkContext(conf)
    val lines:RDD[String] = sc.textFile("./words")//读取这个文件中的每一行
    val words:RDD[String] = lines.flatMap(line=>{//把所有行的所有单词都取出来
      line.split(" ")
    })
    val pairWords:RDD[(String, Int)] = words.map(word=>{new Tuple2(word,1)})//利用map的一对多的形式,输出格式为:第一个参数为每个单词,第二个参数是1。(String, Int)不是两个参数,其实表示一个tuple二元组
    val result :RDD[(String, Int)] = pairWords.reduceByKey((v1:Int,v2:Int)=>{v1+v2})//分组:(v1:Int,v2:Int)中两个参数中,第一个参数是上次计算的数字,第二个参数是本个单词的1,然后相加
    val end :RDD[(String, Int)] = result.sortBy(tuple=>{tuple._2},false)//分组后排序,按从大到小的顺序输出,false表示安装ask排序还是按desc排序
    println("%%%%%");
    end.foreach(tuple=>{
      println(tuple)//打印输出
    })
    sc.stop()
   
   
   /* val conf = new SparkConf().setMaster("local").setAppName("wc")
    new SparkContext(conf).textFile("./words").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).sortBy(_._2,false).foreach(println)
    */
  }
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics