在scala实现对rating.csv文件操作,统计每部电影的评分人数,对评分人数进行排序,在movies.csv文件中过滤出评分人数最多的电影名称
时间: 2023-11-22 20:55:15 浏览: 53
可以使用 Scala 的 Spark SQL 来实现对 rating.csv 文件的操作。以下是一个简单的实现:
```scala
import org.apache.spark.sql.SparkSession
object MovieRating {
def main(args: Array[String]): Unit = {
val spark = SparkSession.builder()
.appName("MovieRating")
.master("local[*]")
.getOrCreate()
// 读取 rating.csv 文件
val ratingDF = spark.read
.option("header", "true")
.option("inferSchema", "true")
.csv("rating.csv")
// 统计每部电影的评分人数
val ratingCountDF = ratingDF.groupBy("movieId").count()
// 对评分人数进行排序
val sortedRatingCountDF = ratingCountDF.orderBy("count")
// 读取 movies.csv 文件
val movieDF = spark.read
.option("header", "true")
.option("inferSchema", "true")
.csv("movies.csv")
// 过滤出评分人数最多的电影名称
val maxRatedMovieDF = movieDF.join(sortedRatingCountDF, "movieId")
.orderBy("count", ascending = false)
.limit(1)
// 打印结果
maxRatedMovieDF.show()
spark.stop()
}
}
```
这段代码首先使用 `SparkSession` 创建一个 Spark 应用程序,并读取 `rating.csv` 和 `movies.csv` 文件,分别存储为 `ratingDF` 和 `movieDF` 两个 DataFrame。然后,使用 `groupBy` 和 `count` 操作统计每部电影的评分人数,并使用 `orderBy` 操作对评分人数进行排序。最后,使用 `join` 操作将评分人数最多的电影和电影名称匹配,并按照评分人数进行降序排序,最后使用 `limit` 操作获取评分人数最多的电影名称。