使用 Scala 和 Spark 计算每个类别的平均值

时间:2021-02-22 17:45:49

标签: scala dataframe apache-spark

我有一个数据框并且正在运行以下查询

sportsData.groupBy("category").agg(count(lit(1)).alias("numberOfRecords")).show(false)

输出

+---------------+---------------+
|category       |numberOfRecords|
+---------------+---------------+
|football       |1              |
|tennis         |2              |
|cricket        |2              |
+---------------+---------------+

我必须找到每个类别的平均值。为此,我知道我可以在按类别分组后运行 agg mean 函数。但由于 numberOfRecords 列在我的数据框中不是真正的列,因此我无法获得平均值。我应该如何进行?

1 个答案:

答案 0 :(得分:0)

这可以从下面的查询中解决

sportsData.groupBy("category").agg(count(lit(1)).alias("numberOfRecords")).toDF().groupBy("category").agg(mean("numberOfRecords")).show(false)

输出如下

+---------------+--------------------+
|category       |avg(numberOfRecords)|
+---------------+--------------------+
|football       |1.0                 |
|Tennis         |2.0                 |
|cricket        |2.0                 |
+---------------+--------------------+
相关问题