2

我正在考虑实施 a UserDefinedAggregateFunctionin spark 并看到 abufferSchema是必需的。我了解如何创建它,但我的问题是为什么它需要 bufferSchema?它不仅需要一个大小(用于聚合的元素数量)、一个 inputSchema 和一个 dataType 吗?bufferSchema 不是将其限制UserDefinedTypes在 sql 的中间步骤中吗?

4

1 回答 1

1

这是必需的,因为缓冲区模式可能与输入类型不同。例如,如果您想计算双精度数的平均值(算术平均值),则在这种情况下,缓冲区需要一个计数和一个总和,请参见 databricks 中的示例如何计算几何平均值:https ://docs.databricks.com/火花/最新/火花-sql/udaf-scala.html

于 2019-08-13T18:31:10.680 回答