用spark sql输出每个学生的平均成绩
时间: 2024-05-13 15:18:38 浏览: 122
假设你的数据已经被加载到 Spark 的 DataFrame 中,其中包含学生姓名、科目和成绩等字段。可以按照以下步骤计算每个学生的平均成绩:
1. 首先,使用 groupBy 函数将数据按照学生姓名进行分组,然后计算每个学生的成绩总和和科目数量:
```
import org.apache.spark.sql.functions._
val groupedData = df.groupBy("姓名")
.agg(sum("成绩").alias("总成绩"), count("科目").alias("科目数量"))
```
2. 接着,使用 withColumn 函数计算每个学生的平均成绩,并将结果保存到新的 DataFrame 中:
```
val avgScores = groupedData.withColumn("平均成绩", $"总成绩" / $"科目数量")
```
3. 最后,使用 select 函数选择需要输出的字段,这里是学生姓名和平均成绩:
```
avgScores.select("姓名", "平均成绩").show()
```
完整代码如下:
```
import org.apache.spark.sql.functions._
val groupedData = df.groupBy("姓名")
.agg(sum("成绩").alias("总成绩"), count("科目").alias("科目数量"))
val avgScores = groupedData.withColumn("平均成绩", $"总成绩" / $"科目数量")
avgScores.select("姓名", "平均成绩").show()
```
阅读全文