如何在spark数据帧的同一列上执行多个agg操作?

时间:2017-05-06 10:53:41

标签: scala apache-spark dataframe aggregation

Helllo朋友,

我有以下功能签名

def groupAndAggregate(inputDS: Dataset[Row], aggregateFunMap: Map[String, String], aggregateColumns: List[String]):Dataset[Row]={
// statements
  }

其中aggregateFunMap是一个Map,包含作为键的列和要执行的相应聚合操作

例如: - val aggregateFunMap=Map("amount"->"avg","amount"->"sum")

而且,aggregateColumns是一个List,其中包含用于按操作分组的列

例如: - val aggregateColumns=List("amount")

我有以下代码来查找按操作和聚合执行分组后的最终结果。

{
   val grouped = inputDS.groupBy(aggregateColumns.head, aggregateColumns.tail: _*)
   grouped.agg(aggregateFunMap)
}

但是当我在同一列上传递了多个聚合操作的Map时,它会返回一个不正确的结果,即;最终的数据帧只包含一个聚合操作。

如果有人可以帮助我,对我来说将是很有帮助的。

0 个答案:

没有答案