【发布时间】:2021-03-31 03:48:12
【问题描述】:
我有以下数据框
+-----+-----+------+
|group|label|active|
+-----+-----+------+
| a| 1| y|
| a| 2| y|
| a| 1| n|
| b| 1| y|
| b| 1| n|
+-----+-----+------+
我想按“组”列分组并按“标签”列收集,同时过滤活动列中的值。
预期的结果是
+-----+---------+---------+----------+
|group| labelyes| labelno |difference|
+-----+---------+---------+----------+
|a | [1,2] | [1] | [2] |
|b | [1] | [1] | [] |
+-----+---------+---------+----------+
我可以通过
轻松过滤“y”标签val dfyes = df.filter($"active" === "y").groupBy("group").agg(collect_set("label"))
对于“n”值也是如此
val dfno = df.filter($"active" === "n").groupBy("group").agg(collect_set("label"))
但我不明白是否可以在过滤时同时聚合以及如何获得两组的差异。
【问题讨论】:
标签: arrays scala apache-spark group-by apache-spark-sql