java - 在 Java Spark 中使用不同的列元素对相关数据执行操作
问题描述
我是 Spark 的初学者,我正试图了解处理数据的不同方式。如果我有一个由学生列表组成的数据框,以及他们所取得的所有不同考试成绩,我将如何计算每个学生的平均分数?例如
+------+-----+
|userId|score|
+------+-----+
| 1 | 65 |
| 1 | 68 |
| 1 | 76 |
| 1 | 75 |
| 2 | 96 |
| 2 | 63 |
| 2 | 60 |
| 3 | 56 |
| 3 | 58 |
| 3 | 75 |
| 4 | 85 |
+------+-----+
作为
+------+-----+
|userId|score|
+------+-----+
| 1 | 71 |
| 2 | 73 |
| 3 | 63 |
| 4 | 85 |
+------+-----+
有人能给我一些关于如何做到这一点的指示吗?谢谢
解决方案
df.registerTempTable("userScoreTable");
DataFrame userAvg = sqlContext.sql(
"select distinct(score.id),avg(score.scores) from userScoreTable score");
List<int,Long> useravgs =
userAvg.rdd().map(rec ->(rec.getInt(0),rec.getLong(1))).collect();
推荐阅读
- ionic-framework - Ionic 2 状态栏颜色文本
- xml - 如何根据属性获取多个代码的计数
- python - 为什么 pandas 的 apply 方法没有一个 axis=None 选项来将函数应用于整个数据框?
- java - 如何使用 Apache Camel Netty4 在异步模式下通过已建立的 TCP 连接发回响应?
- ios - 安全区域不移动物品
- batch-file - 根据输入参数的数量在批处理脚本中循环
- corda - 实施法律散文模板
- linux - 在linux上安装red5的问题
- java - 等待 / notifyAll 没有按预期工作
- java - 为 Spring Boot 2.0 acuator 框架配置安全性