【问题标题】:Is there an aggregateByKey function in Spark DataFrame? [duplicate]Spark DataFrame 中是否有 aggregateByKey 函数? [复制]
【发布时间】:2019-05-28 06:23:00
【问题描述】:

在 Spark 中,DataFrame API 中是否存在与 RDD 等效的 aggregateByKey 方法?

RDD aggregateByKey API doc

【问题讨论】:

  • 对于数据框 API,使用 groupBy

标签: apache-spark dataframe rdd


【解决方案1】:

DataFrame 接口中最常见的聚合操作可以使用agg 和已定义的聚合器(例如sumfirstmax 等。如果您想做类似 GROUP BY 和聚合的事情,a la SQL,您应该首先查看那些现有的聚合函数.

aggregateByKey 方法公开了更复杂的逻辑,但是,它允许您实现一些复杂的聚合例程。如果你想这样做,你会想要使用 Dataset 接口,它与你已经习惯于 RDD 的接口非常相似。具体来说,看看创建一个自定义聚合器:

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

在那里,您可以定义聚合器方法,如 initializemerge 等,指定如何创建聚合器、将单个元素合并到聚合中以及跨执行器/任务将中间聚合组合在一起。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-24
    相关资源
    最近更新 更多