在scala实现对rating.csv文件操作,统计每部电影的评分人数,对评分人数进行排序,在movies.csv文件中过滤出评分人数最多的电影名称
时间: 2023-11-22 20:55:39 浏览: 54
以下是一个Scala实现的示例代码:
```scala
import scala.io.Source
// 读取rating.csv文件,统计每部电影的评分人数
val ratingSrc = Source.fromFile("rating.csv")
val ratingLines = ratingSrc.getLines().drop(1) // 跳过第一行
val ratingCounts = ratingLines
.map(line => line.split(",")(1).toInt) // 获取电影ID
.groupBy(identity) // 按照电影ID分组
.mapValues(_.length) // 统计每组的数量
ratingSrc.close()
// 对评分人数进行排序
val sortedCounts = ratingCounts.toSeq.sortBy(-_._2)
// 读取movies.csv文件,过滤出评分人数最多的电影名称
val moviesSrc = Source.fromFile("movies.csv")
val moviesLines = moviesSrc.getLines().drop(1) // 跳过第一行
val topMovieName = moviesLines
.map(line => (line.split(",")(0).toInt, line.split(",")(1))) // 获取电影ID和电影名称
.filter{ case (id, _) => sortedCounts.headOption.exists(_._1 == id) } // 过滤评分人数最多的电影
.map(_._2) // 获取电影名称
.next() // 获取第一个结果
moviesSrc.close()
println(s"评分人数最多的电影名称是 $topMovieName")
```
这个示例代码中,我们首先读取了rating.csv文件,统计了每部电影的评分人数,并对评分人数进行了排序。然后,我们读取了movies.csv文件,过滤出评分人数最多的电影名称。注意,这个示例代码中假设评分人数最多的电影只有一部。如果有多部电影的评分人数相同,这个代码只会返回第一部电影的名称。
阅读全文