【问题标题】:Performance of UDAF versus Aggregator in SparkSpark 中 UDAF 与聚合器的性能对比
【发布时间】:2018-01-03 12:25:13
【问题描述】:

我正在尝试在 Spark 中编写一些注重性能的代码,并且想知道是否应该为 Dataframe 上的汇总操作编写 AggregatorUser-defined Aggregate Function (UDAF)。

我无法在任何地方找到任何有关这些方法的速度以及您应该在 spark 2.0+ 中使用哪种方法的数据。

【问题讨论】:

  • 您在考虑什么“汇总操作”? Spark SQL 已经支持rollup 聚合。
  • @JacekLaskowski 嗨,Jacek,这就是我的意思,使用 rollup 但带有自定义聚合函数。

标签: performance apache-spark spark-dataframe aggregate-functions apache-spark-2.0


【解决方案1】:

您应该将Aggregator 写成UserDefinedAggregateFunction performs inefficient serialization/deserialization tasks for each row 而不是UserDefinedAggregateFunction。将UserDefinedAggregateFunction 重写为Aggregator 可以将性能从25%-30% 提高到100 倍,如in pull request replacing UserDefinedAggregateFunction with Aggregator 所述

由于这些性能问题,UserDefinedAggregateFunction class has been deprecated in Spark 3.0

【讨论】:

    猜你喜欢
    • 2020-11-30
    • 1970-01-01
    • 1970-01-01
    • 2019-01-28
    • 1970-01-01
    • 2018-04-27
    • 1970-01-01
    • 2015-10-02
    相关资源
    最近更新 更多