我正在尝试用Spark编写一些关注性能的代码,想知道我应该为数据帧上的汇总操作编写Aggregator还是User-defined Aggregate Function (UDAF)。
我在任何地方都找不到任何数据,关于这些方法中的每一种有多快,以及你应该将哪些方法用于spark 2.0+。
发布于 2021-09-10 14:05:37
您应该将Aggregator而不是UserDefinedAggregateFunction作为UserDefinedAggregateFunction performs inefficient serialization/deserialization tasks for each row来编写。如in pull request replacing UserDefinedAggregateFunction with Aggregator所述,将UserDefinedAggregateFunction重写为Aggregator可以将性能从25%-30%提高到100倍
由于这些性能问题,UserDefinedAggregateFunction class has been deprecated in Spark 3.0
https://stackoverflow.com/questions/45356452
复制相似问题