scala中WordCountHight

object $18_WordCountHight {

  def main(args: Array[String]): Unit = {
    val tupleList = List(("Hello Scala Spark World", 4), ("Hello Scala Spark", 3), ("Hello Scala", 2), ("Hello", 1))

    //1、切割+压平,给单词赋予初始次数
    val words = tupleList.flatMap(x=>{
      //x = ("Hello Scala Spark World", 4)
      //切割
      val arr = x._1.split(" ")
      //Array(Hello,Scala,Spark,Word)
      val tu = arr.map(y=>{
        //y = Hello
        (y,x._2)
      })
      tu
    })
    //List( (Hello,4),(Scala,4),(Spark,4),(Word,4),(Hello,3),(Scala,3),(Spark,3),(Hello,2),(Scala,2),(Hello,1) )

    //2、按照单词分组
    val groupedMap = words.groupBy(x=> x._1)
    //Map(
    //    Hello-> List(  (Hello,4), (Hello,3), (Hello,2), (Hello,1) )
    //    ....
    // )
    //3、统计单词个数
    val result = groupedMap.map(x=>{
      //x = Hello-> List(  (Hello,4), (Hello,3), (Hello,2), (Hello,1) )
      //val r = x._2.reduce((agg,curr)=> (agg._1, agg._2+curr._2))
      //r
      val r = x._2.map(y=>y._2).sum
      (x._1,  r )
    })

    //4、结果展示
    result.foreach(x=>println(x))
    //List((Hello,10),(Scala,9),(Spark,7),(World,4))
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值