如何在火花数据框组内进行计数(*)
Posted
技术标签:
【中文标题】如何在火花数据框组内进行计数(*)【英文标题】:How to do count(*) within a spark dataframe groupBy 【发布时间】:2017-09-26 02:54:25 【问题描述】:我的意图是做基本sql的等价物
select shipgrp, shipstatus, count(*) cnt
from shipstatus group by shipgrp, shipstatus
我看到的火花数据帧的例子包括其他列的汇总:例如
df.groupBy($"shipgrp", $"shipstatus").agg(sum($"quantity"))
但在我上面显示的情况下,不需要其他列。那么这里的语法和/或方法调用组合是什么?
更新一位读者建议这个问题与dataframe: how to groupBy/count then filter on count in Scala 重复:但那个问题是关于通过count
过滤的:这里没有过滤。
【问题讨论】:
【参考方案1】:您也可以在 spark agg
函数中类似地执行 count("*")
:
df.groupBy("shipgrp", "shipstatus").agg(count("*").as("cnt"))
val df = Seq(("a", 1), ("a", 1), ("b", 2), ("b", 3)).toDF("A", "B")
df.groupBy("A", "B").agg(count("*").as("cnt")).show
+---+---+---+
| A| B|cnt|
+---+---+---+
| b| 2| 1|
| a| 1| 2|
| b| 3| 1|
+---+---+---+
【讨论】:
以上是关于如何在火花数据框组内进行计数(*)的主要内容,如果未能解决你的问题,请参考以下文章