Spark-wordcount案例

def main(args: Array[String]): Unit = {
    //创建一个配置信息对象
    //设置应用程序名称
    val config:SparkConf = new SparkConf().setAppName("scala_worldcount")
      //设置运行模式
      /*
      * local:使用本地一个线程模拟集群执行任务
      * local(num)  使用num个线程去模拟一个集群去执行任务
      * local[*] 使用所有空闲的线程去模拟集群任务
      * */
      .setMaster("local[*]")
    //spark 上下文对象,执行spark程序的入口
    val sc:SparkContext = new SparkContext(config)

    //读取数据源
    //通过参数设置源文件路径,hdfs文件,本地文件
    //RDD集合里的每一个元素是文件里的一行
    //参数是main中第一个参数
    val lines:RDD[String] = sc.textFile(args(0))
    //单词的rdd集合
    val words:RDD[String] = lines.flatMap(_.split(" "))
    //(单词,1)的rdd集合
    val tupleEorlds:RDD[(String,Int)] = words.map((_,1))

    //现根据word进行分组,对每组的value集合元素进行reduce聚合
    val res:RDD[(String,Int)] = tupleEorlds.reduceByKey(_+_)
    //根据每一个单词出现的次数进行排序
    val sorted:RDD[(String,Int)] = res.sortBy(_._2,false)

    //结果打印,吧结果从executor汇聚到driver端
    println(sorted.collect().toBuffer)
    //结果保存到文件系统中
    //sorted.saveAsTextFile(args(1))

    //资源释放
    sc.stop()
  }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值