Scala 实现 WordCount 从详解到极简写法
步骤详解
val dataList = List(
("Hello Scala", 4), ("Hello Spark", 2)
)
val kv_list = dataList.map(kv => kv._1.split(" ").map((_, kv._2)).toList)
val kv_f = kv_list.flatten
val kv_group = kv_f.groupBy(_._1)
val kv_value = kv_group.mapValues(_.map(_._2).sum)
val kv_sort = kv_value.toList.sortBy(_._2)(Ordering Int).reverse
一把到底
val dataList = List(
("Hello Scala", 4), ("Hello Spark", 2)
dataList.map(kv => kv._1.split(" ").map((_, kv._2)))
.flatten.groupBy(_._1)
.mapValues(_.map(_._2).sum).toList
.sortBy(_._2)(Ordering Int).reverse
更进一步简洁
val dataList = List(
("Hello Scala", 4), ("Hello Spark", 2)
dataList.flatMap(kv => kv._1.split(" ").map((_, kv._2)))
.groupBy(_._1)
.mapValues(_.map(_._2).sum).toList
.sortBy(_._2)(Ordering Int).reverse