在Spark中,在DataFrame应用程序接口中是否有可用于RDD的aggregateByKey方法的等价物?
发布于 2019-05-28 06:10:03
DataFrame接口中的大多数常见聚合操作都可以使用agg
和已经定义的聚合器(例如sum
、first
、max
等)来完成。如果你想做一些像GROUP BY
和聚合之类的事情,你应该首先查看那些现有的聚合函数。
但是,aggregateByKey
方法公开了更复杂的逻辑,这允许您实现一些复杂的聚合例程。如果您希望这样做,您将希望使用Dataset接口,该接口与您已经习惯于使用RDDs的接口非常相似。具体地说,研究一下创建自定义聚合器:
https://docs.databricks.com/spark/latest/spark-sql/udaf-scala.html
在这里,您将定义诸如initialize
、merge
等聚合器方法,这些方法指定如何创建聚合器、如何将单个元素合并到聚合器中以及如何跨执行器/任务将中间聚合器组合在一起。
一旦定义了聚合器,您就可以在数据集上使用它,例如
ds.groupBy(_.myKey).agg(myCustomAggregator)
https://stackoverflow.com/questions/56332507
复制相似问题