51_集合_MapReduceComplex(预聚合)

复制代码
import scala.collection.mutable

object MapReduceComplex extends App {
  var tp1 = ("Hello Scala Spark World ", 4)
  var tp2 = ("Hello Scala Spark", 3)
  var tp3 = ("Hello Scala", 2)
  var tp4 = ("Hello", 1)
  //1.数据准备
  val tupleList = List(tp1, tp2, tp3, tp4)
  println("tupleList : ", tupleList)

  //2.拆分
  def splitRule(tp: (String, Int)) = {
    var map: mutable.Map[String, Int] = mutable.Map()
    for (key <- tp._1.split(" ")) {
      map.update(key, tp._2)
    }
    map
  }

  var list1 = tupleList.map(splitRule)
  println("list1 : " + list1)

  //3.拉平
  var list2 = list1.flatten
  println("list2 : ", list2)

  //4.分组
  //def groupRule(tp: (String, Int)) = tp._1

  var list3 = list2.groupBy(tp => tp._1)
  println("list3 : " + list3)

  //5.计数 map的map函数接收的是一个二元组
  def sumRule(tp: (String, List[(String, Int)])) = {

    var sum = 0
    for (e <- tp._2) {
      sum += e._2
    }
    (tp._1, sum)

  }

  var list4 = list3.map(sumRule _)
  println(list4)

  //6.排序
  var list5 = list4.toList.sortBy(tp => tp._2)
  println(list5)


}
复制代码

 

posted @   学而不思则罔!  阅读(50)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界
点击右上角即可分享
微信分享提示