统计每个班级的平均分。 score_rdd = sc.parallelize([(1, 90), (2, 80), (1, 85), (2, 75), (1, 95)])
时间: 2023-10-07 10:07:56 浏览: 132
rdd_public_draft1.zip_RDD134_game_php_random_salex4v
可以使用 Spark 的 map-reduce 操作来实现。首先,对 RDD 进行 map 操作,将每个元素的键(即班级编号)作为 key,将每个元素的值(即分数)作为 value。然后,对这些键值对进行 reduceByKey 操作,计算每个班级的总分和学生人数,最后对每个班级的总分除以学生人数得到平均分。
代码如下:
```
score_rdd = sc.parallelize([(1, 90), (2, 80), (1, 85), (2, 75), (1, 95)])
# 计算每个班级的总分和学生人数
class_total = score_rdd.map(lambda x: (x[0], (x[1], 1))) \
.reduceByKey(lambda x, y: (x[0] + y[0], x[1] + y[1]))
# 计算每个班级的平均分
class_avg = class_total.map(lambda x: (x[0], x[1][0] / x[1][1]))
# 输出结果
print(class_avg.collect())
```
输出结果为:
```
[(2, 77.5), (1, 90.0)]
```
表示第 1 个班级的平均分为 90 分,第 2 个班级的平均分为 77.5 分。
阅读全文