spark查找评分最高的10部电影
时间: 2023-07-05 14:11:59 浏览: 55
可以使用Spark中的DataFrame和SQL语句来实现查找评分最高的10部电影。假设评分数据保存在名为`ratings`的DataFrame中,包含`userId`、`movieId`和`rating`等字段,电影数据保存在名为`movies`的DataFrame中,包含`movieId`和`title`等字段。可以按照以下步骤进行操作:
1. 使用Spark SQL语句将电影和评分数据进行关联,只保留评分数据中的电影ID、评分和电影名称等信息,计算每部电影的平均评分,按照平均评分从高到低排序,只保留前10部电影的信息。
```scala
val topMovies = spark.sql("SELECT m.title, AVG(r.rating) as avg_rating " +
"FROM movies m JOIN ratings r ON m.movieId = r.movieId " +
"GROUP BY m.title " +
"ORDER BY avg_rating DESC " +
"LIMIT 10")
```
2. 使用Spark DataFrame的API也可以实现同样的功能,代码如下:
```scala
import org.apache.spark.sql.functions._
val topMovies = ratings.join(movies, Seq("movieId"))
.groupBy("title")
.agg(avg("rating").as("avg_rating"))
.orderBy($"avg_rating".desc)
.limit(10)
.select("title", "avg_rating")
```
这样就可以获取评分最高的10部电影的信息。