首页 > 解决方案 > 在 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 |
+------+-----+

有人能给我一些关于如何做到这一点的指示吗?谢谢

标签: javadatabaseapache-spark

解决方案


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();


推荐阅读