Scala实现文本的WordCount
Posted 程序员zx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scala实现文本的WordCount相关的知识,希望对你有一定的参考价值。
统计文章中出现单词数量最多的前2
资源文件中存在test.txt, 内容如下:
hello world scala
hello world spark
hello world kafka
hello zx
代码示例
object WorldCountFromFile {
def main(args: Array[String]): Unit = {
val lines = Source.fromURL(getClass.getResource("/test.txt")).getLines().toList
val res = lines.flatMap(_.split(" ")).map((_, 1)).groupBy(_._1)
.map(t=>(t._1, t._2.size)).toList.sortBy(_._2).reverse.take(2)
println(res)
}
}
res结果:
详细步骤分析:
// 拿到文本,转换成List
val lines = Source.fromURL(getClass.getResource("/test.txt")).getLines().toList
// 数据打平 flatMap = map + flatten
val flatMap = lines.flatMap(_.split(" "))
// 将单词出现一次和1放在一起(放入元组)
val map = flatMap.map((_, 1))
// groupBy 按照单词分组返回map
val group = map.groupBy(_._1)
// 求和
val mapCount = group.map(t => (t._1, t._2.size))
// HashMap转List
val list = mapCount.toList
// sortBy 按单词出现的次数排序
val sortAsc = list.sortBy(_._2)
// 默认自然排序 使用reverse逆序
val sortDesc = sortAsc.reverse
// take取前2条记录
val res = sortDesc.take(2)
-----END-----
喜欢本文的朋友们,欢迎长按下图关注订阅号
程序员zx,收看更多精彩内容
以上是关于Scala实现文本的WordCount的主要内容,如果未能解决你的问题,请参考以下文章