【发布时间】:2019-05-28 06:23:00
【问题描述】:
【问题讨论】:
-
对于数据框 API,使用
groupBy。
标签: apache-spark dataframe rdd
【问题讨论】:
groupBy。
标签: apache-spark dataframe rdd
DataFrame 接口中最常见的聚合操作可以使用agg 和已定义的聚合器(例如sum、first、max 等。如果您想做类似 GROUP BY 和聚合的事情,a la SQL,您应该首先查看那些现有的聚合函数.
aggregateByKey 方法公开了更复杂的逻辑,但是,它允许您实现一些复杂的聚合例程。如果你想这样做,你会想要使用 Dataset 接口,它与你已经习惯于 RDD 的接口非常相似。具体来说,看看创建一个自定义聚合器:
https://docs.databricks.com/spark/latest/spark-sql/udaf-scala.html
在那里,您可以定义聚合器方法,如 initialize、merge 等,指定如何创建聚合器、将单个元素合并到聚合中以及跨执行器/任务将中间聚合组合在一起。
一旦定义了聚合器,您就可以在数据集上使用它,例如
ds.groupBy(_.myKey).agg(myCustomAggregator)
【讨论】: