我有如下数据,
n1 d1 un1 mt1 1
n1 d1 un1 mt2 2
n1 d1 un1 mt3 3
n1 d1 un1 mt4 4
n1 d2 un1 mt1 3
n1 d2 un1 mt3 3
n1 d2 un1 mt4 4
n1 d2 un1 mt5 6
n1 d2 un1 mt2 3
我想得到如下输出
n1 d1 un1 0.75
n1 d2 un1 1.5
i,e 在第 1、第 2 和第 3 列上进行分组,对于第 4 列,请遵循以下公式, 第 4 列 = 在组内,(mt1+mt2)/mt4
我正在尝试对 Spark DF 做同样的事情,假设数据在数据帧 a 中,列名为 n,d,un,mt,r 我正在尝试这个。
sqlContext.udf.register("aggUDF",(v:List(mt,r))=> ?)
val b = a.groupBy("n","d","un").agg(callUdf("aggUDF",List((mt,r)) should go here))