spark读取ratings文件并获取评分前10的电影
时间: 2024-02-12 16:07:22 浏览: 77
假设你的`ratings`数据是以CSV格式存储的,包含`userId`、`movieId`和`rating`等字段,可以按照以下步骤进行操作:
1. 使用SparkSession读取CSV文件,生成DataFrame。
```scala
val spark = SparkSession.builder()
.appName("Top 10 Movies")
.master("local[*]")
.getOrCreate()
val ratings = spark.read.option("header", "true")
.option("inferSchema", "true")
.csv("path/to/ratings.csv")
```
2. 使用Spark DataFrame的API,将`ratings`和`movies`数据进行关联,按照平均评分从高到低排序,只保留前10部电影的信息。
```scala
import org.apache.spark.sql.functions._
val movies = spark.read.option("header", "true")
.option("inferSchema", "true")
.csv("path/to/movies.csv")
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的电影的信息。请注意,如果你的`ratings`数据量很大,可能需要进行分区和缓存等优化操作,以提高程序的性能。
阅读全文