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

Scala实现文本的WordCount

// 数据打平 flatMap = map + flatten
val flatMap = lines.flatMap(_.split(" "))

Scala实现文本的WordCount

// 将单词出现一次和1放在一起(放入元组)
val map = flatMap.map((_, 1))

Scala实现文本的WordCount

// groupBy 按照单词分组返回map
val group = map.groupBy(_._1)

Scala实现文本的WordCount

// 求和
val mapCount = group.map(t => (t._1, t._2.size))

Scala实现文本的WordCount

// HashMap转List
val list = mapCount.toList

Scala实现文本的WordCount

// sortBy 按单词出现的次数排序
val sortAsc = list.sortBy(_._2)

Scala实现文本的WordCount

// 默认自然排序 使用reverse逆序
val sortDesc = sortAsc.reverse

Scala实现文本的WordCount

// take取前2条记录
val res = sortDesc.take(2)



-----END-----



喜欢本文的朋友们,欢迎长按下图关注订阅号

程序员zx,收看更多精彩内容


以上是关于Scala实现文本的WordCount的主要内容,如果未能解决你的问题,请参考以下文章

Akka实现WordCount(Scala)

FlinkFlink基础之WordCount实例(Java与Scala版本)

flink的流式wordcount代码解析

flink的流式wordcount代码解析

Scala中做简易wordCount

关于Spark、Scala实现WordCount的8种写法(多种写法)