要求不使用spark算子只使⽤scala实现统计⽂本⽂件:1. 出现了多少单词2.每个单词出现的次数 再根据单词出现的次数倒序排列
时间: 2023-11-25 08:05:00 浏览: 81
scala-2.12.14.zip&scala-2.12.11.tgz Linux版本压缩包.rar
可以使用Scala中的集合和文件操作来实现这个需求,以下是一个示例代码:
```scala
import scala.io.Source
// 读取文本文件内容
val text = Source.fromFile("input.txt").mkString
// 将文本内容转换为单词列表
val words = text.split("\\W+")
// 统计单词出现次数
val wordCounts = words.groupBy(identity).mapValues(_.length)
// 按照单词出现次数倒序排序
val sortedWordCounts = wordCounts.toSeq.sortBy(-_._2)
// 输出结果
println(s"Total number of words: ${words.length}")
println("Word counts:")
sortedWordCounts.foreach { case (word, count) => println(s"$word: $count") }
```
这段代码首先使用`Source.fromFile`方法读取输入文件的内容,并使用`split`方法将其转换为单词列表。然后使用`groupBy`方法和`mapValues`方法统计每个单词出现的次数,并将结果保存在`wordCounts`变量中。最后,使用`toSeq`方法将`wordCounts`转换为元素类型为`(String, Int)`的序列,并使用`sortBy`方法按照第二个元素(即单词出现次数)进行倒序排序,将结果保存在`sortedWordCounts`变量中。最后,使用`foreach`方法将排好序的单词及其出现次数输出到控制台。
阅读全文