在scala里面spark计算每部电影的平均分
时间: 2023-07-05 13:03:48 浏览: 103
基于Spark的电影数据集分析
5星 · 资源好评率100%
假设你有一个包含电影评分的RDD,其中每个元素都是一个包含电影ID和评分的元组,可以按照以下方式计算每部电影的平均分:
```scala
val ratings: RDD[(Int, Double)] = ... // 电影ID和评分的元组RDD
val movieRatings: RDD[(Int, Iterable[Double])] = ratings.groupByKey() // 按电影ID进行分组
val movieAvgRatings: RDD[(Int, Double)] = movieRatings.mapValues(ratings => ratings.sum / ratings.size) // 计算每部电影的平均分
```
首先,通过 `groupByKey()` 将所有具有相同电影ID的评分分组在一起,生成一个包含电影ID和评分迭代器的元组RDD。然后,通过 `mapValues()` 对每个电影的评分计算平均值,并生成一个包含电影ID和平均评分的新元组RDD。注意,这里使用了 `mapValues()` 而不是 `map()`,因为我们只需要更新评分值,而不需要改变电影ID。
阅读全文