spark Scala Ratings.csv文件 文件里面的内容包含了每一个用户对于每一部电影的评分。数据格式如下: userId, movieId, rating, timestamp userId: 每个用户的id movieId: 每部电影的id rating: 用户评分,是5星制 timestamp: 自1970年1月1日零点后到用户提交评价的时间的秒数 movies.csv文件 movieId: 每部电影的Id title:每部电影的名字 统计最受欢迎的电影(即评分人数最多的电影)
时间: 2024-02-11 12:07:16 浏览: 136
可以使用Spark来处理这个问题。首先,我们需要读取Ratings.csv文件并创建一个DataFrame对象,然后按照movieId进行分组,计算每部电影的评分人数,并按照评分人数进行降序排列,最后取出第一行即可。
以下是Scala代码示例:
```scala
import org.apache.spark.sql.functions._
// 读取Ratings.csv文件并创建DataFrame对象
val ratings = spark.read.format("csv")
.option("header", "true")
.option("inferSchema", "true")
.load("Ratings.csv")
// 按照movieId进行分组,计算每部电影的评分人数,并按照评分人数进行降序排列
val popularMovies = ratings.groupBy("movieId")
.agg(count("userId").alias("numRatings"))
.orderBy(desc("numRatings"))
// 读取movies.csv文件并创建DataFrame对象
val movies = spark.read.format("csv")
.option("header", "true")
.load("movies.csv")
// 将popularMovies和movies进行join操作,取出评分人数最多的电影
val result = popularMovies.join(movies, Seq("movieId"))
.select("title", "numRatings")
.limit(1)
result.show()
```
运行以上代码,输出结果将会是评分人数最多的电影的名字和评分人数。
阅读全文