如何在spark数据帧组中进行count(*)

jav*_*dba 2 scala apache-spark apache-spark-sql

我的意图是做相当于基本的sql

select shipgrp, shipstatus, count(*) cnt 
from shipstatus group by shipgrp, shipstatus
Run Code Online (Sandbox Code Playgroud)

我在spark数据帧中看到的示例包括其他列的汇总:例如

df.groupBy($"shipgrp", $"shipstatus").agg(sum($"quantity"))
Run Code Online (Sandbox Code Playgroud)

但在上面显示的情况下,不需要其他列.那么这里的语法和/或方法调用组合是什么?

Psi*_*dom 8

您可以类似地执行count("*")spark agg函数:

df.groupBy("shipgrp", "shipstatus").agg(count("*").as("cnt"))
Run Code Online (Sandbox Code Playgroud)
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|
+---+---+---+
Run Code Online (Sandbox Code Playgroud)