【发布时间】:2018-09-28 05:47:34
【问题描述】:
为简单起见,假设我有以下 daraframe:
col X col Y col Z
A 1 5
A 2 10
A 3 10
B 5 15
我想对 X 列进行分组并通过取 Z 的最小值进行聚合,但是我希望 Y 值是最小值 Z 的相邻值
df.groupBy("X").agg(min("Z"), take_y_according_to_min_z("Y")
期望的输出:
col X col Y col Z
A 1 5
B 5 15
注意:如果有两个以上的 min("Z") 值,我不在乎我们采用哪一行。
我试图在网上找到一些干净且 SPARKy 的东西。我很清楚如何在 MapReduce 中做到这一点,但我在 SPARK 上找不到方法。
我正在开发 SPARK 1.6
【问题讨论】:
-
你可以在struct中结合y和z,找到最小值,最后再分开
-
是的,这是我的第一种方法,正如我所说,如果有的话,我想要一种更干净的方法。对于简单的任务似乎需要付出很大的努力
-
这不是很大的努力;)这很简单
-
@RameshMaharjan 构造 groupby 聚合然后爆炸?
-
不 :) 你不需要爆炸。只需使用通配符 .* 分隔 struct 列我只是想找到一个重复项,因为我看到有人回答相同
标签: apache-spark dataframe bigdata aggregate