如何在Spark DataFrame Groupby中进行计数(*)



我的意图是做基本sql

select shipgrp, shipstatus, count(*) cnt 
from shipstatus group by shipgrp, shipstatus

我看到的Spark DataFrames的示例包括其他列的汇总:例如

df.groupBy($"shipgrp", $"shipstatus").agg(sum($"quantity"))

,但在我的情况下,不需要其他列。那么这里的语法和/或方法呼叫组合是什么?

更新读者建议这个问题是数据框的重复:如何分组/计数然后在Scala中进行过滤:但是,这是关于通过count进行过滤的:这里没有过滤。

您可以在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|
+---+---+---+

相关内容

  • 没有找到相关文章

最新更新