You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java Spark中基于用户ID分组计算学生平均分的方法

嘿,作为Spark初学者,碰到这种分组聚合的需求太常见啦!我来帮你快速搞定按userId计算平均分的问题~

核心思路

要实现这个需求,只需要两步:

  • 第一步:用groupBy()方法按照userId对数据进行分组
  • 第二步:对每个分组的score列使用avg()聚合函数计算平均值,还可以给结果列起个更友好的别名

代码实现(分Python和Scala版本)

Python 版本

假设你的DataFrame名称是student_scores,代码如下:

from pyspark.sql.functions import avg

# 分组计算平均分,并给结果列命名
avg_scores_df = student_scores.groupBy("userId").agg(avg("score").alias("average_score"))

# 查看最终结果
avg_scores_df.show()

执行后你会得到类似这样的结果:

+------+-------------+
|userId|average_score|
+------+-------------+
|     1|         71.0|
|     2|         73.0|
|     3|         63.0|
|     4|         85.0|
+------+-------------+

Scala 版本

如果是用Scala开发,代码逻辑是一致的:

import org.apache.spark.sql.functions.avg

// 分组计算平均分
val avgScoresDF = studentScores.groupBy("userId").agg(avg("score").alias("average_score"))

// 展示结果
avgScoresDF.show()

额外小技巧

如果需要控制平均分的小数位数,可以搭配round()函数使用,比如保留1位小数:

from pyspark.sql.functions import avg, round

avg_scores_df = student_scores.groupBy("userId").agg(round(avg("score"), 1).alias("average_score"))

这样处理后,结果会更整洁哦!

内容的提问来源于stack exchange,提问作者W.Howe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:43:09