Spark DataFrame中是否有gregationByKey函数?

时间:2019-05-27 21:12:49

标签: apache-spark dataframe rdd

在Spark中,DataFrame API中的RDD是否有等效的gregationByKey方法可用?

RDD aggregateByKey API doc

1 个答案:

答案 0 :(得分:2)

DataFrame接口中的大多数常用聚合操作都可以通过agg和已经定义的聚合器来完成,例如sumfirstmax等。如果您要进行类似GROUP BY和聚合, la SQL的操作,应该先研究那些现有的聚合函数。

aggregateByKey方法公开了更复杂的逻辑,但是,它使您可以实现一些复杂的聚合例程。如果您想这样做,则需要使用Dataset接口,该接口与您已经从RDD中使用的接口非常相似。具体来说,请考虑创建一个自定义聚合器:

https://docs.databricks.com/spark/latest/spark-sql/udaf-scala.html

在那里,您定义了诸如initializemerge之类的聚合器方法,这些方法指定如何创建聚合器,将各个元素合并到聚合中以及将跨执行者/任务的中间聚合合并在一起。

定义了聚合器后,您可以在数据集上使用它,例如

ds.groupBy(_.myKey).agg(myCustomAggregator)