一句话:提出同态演算,可验证或反驳 UDAF 是否为 dataframe 同态,并构造合并算子以支持增量与并行计算。
Apache Spark、Flink 等数据处理框架支持用户自定义聚合函数(UDAF),但高效执行要求函数满足同态性质,使独立计算的部分结果可正确合并。本文提出一种新的同态演算,用于验证或反驳 UDAF 是否为 dataframe 同态;当判定为同态时,还能构造对应的 merge 算子,以服务增量计算和并行执行。作者基于该演算实现算法,并在真实世界的 UDAF 上评估,结果表明其性能显著优于两个领先的合成器。
Data processing frameworks like Apache Spark and Flink provide built-in support for user-defined aggregation functions (UDAFs), enabling the integration of domain-specific logic. However, for these frameworks to support efficient UDAF execution, the function needs to satisfy a homomorphism property, which ensures that partial results from independent computations can be merged correctly Motivated by this problem, this paper introduces a novel homomorphism calculus that can both verify and refute whether a UDAF is a dataframe homomorphism. If so, our calculus also enables the construction of a corresponding merge operator which can be used for incremental computation and parallel execution. We have implemented an algorithm based on our proposed calculus and evaluate it on real-world UDAFs, demonstrating that our approach significantly outperforms two leading synthesizers.
@article{paperbot2935,
title = {Homomorphism Calculus for User-Defined Aggregations},
author = {Ziteng Wang and Ruijie Fang and Linus Zheng and Dixin Tang and Işıl Dillig},
journal = {Proceedings of the ACM on Programming Languages},
volume = {9},
number = {OOPSLA2},
year = {2025},
doi = {10.1145/3763072}
}