使用Spark SQL分析,找出每种类型的评分最高10部电影,使用scala编程语言
时间: 2024-03-25 16:35:23 浏览: 66
好的,我会尽力回答你的问题。首先,你需要有一个电影评分数据集,我这里以MovieLens数据集为例。
你可以按以下步骤进行操作:
1. 导入Spark SQL相关库
```scala
import org.apache.spark.sql.{DataFrame, SparkSession}
import org.apache.spark.sql.functions._
```
2. 创建SparkSession
```scala
val spark = SparkSession.builder()
.appName("Top10MoviesByRating")
.master("local[*]")
.getOrCreate()
```
3. 加载数据集并创建DataFrame
```scala
val ratingsDf = spark.read
.option("header", "true")
.option("inferSchema", "true")
.csv("ratings.csv")
val moviesDf = spark.read
.option("header", "true")
.option("inferSchema", "true")
.csv("movies.csv")
```
4. 对数据进行预处理,包括筛选出评分最高的10部电影并按类型分组
```scala
val top10RatingMoviesDf = ratingsDf
.groupBy("movieId")
.agg(avg("rating").as("avgRating"))
.orderBy(desc("avgRating"))
.limit(10)
.join(moviesDf, Seq("movieId"), "left")
val top10RatingMoviesByGenreDf = top10RatingMoviesDf
.select(explode(split($"genres", "\\|")).as("genre"), $"title", $"avgRating")
.groupBy("genre")
.agg(collect_list(struct($"title", $"avgRating")).as("movieRatings"))
```
5. 输出结果
```scala
top10RatingMoviesByGenreDf.show(truncate = false)
```
这样就可以得到每种类型的评分最高的10部电影了。希望能够对你有所帮助。
阅读全文