ImperativeAggregate — Aggregate Function Expressions with Imperative Methods¶
ImperativeAggregate
is the <Row
-based aggregation buffers).
ImperativeAggregate
is a Catalyst expression with CodegenFallback.
[[implementations]] .ImperativeAggregate's Direct Implementations [width="100%",cols="1,2",options="header"] |=== | Name | Description
HyperLogLogPlusPlus |
---|
PivotFirst |
---|
expressions/ScalaUDAF.md[ScalaUDAF] |
---|
spark-sql-Expression-TypedImperativeAggregate.md[TypedImperativeAggregate] |
---|
=== |
=== [[contract]] ImperativeAggregate Contract
[source, scala]¶
package org.apache.spark.sql.catalyst.expressions.aggregate
abstract class ImperativeAggregate { def initialize(mutableAggBuffer: InternalRow): Unit val inputAggBufferOffset: Int def merge(mutableAggBuffer: InternalRow, inputAggBuffer: InternalRow): Unit val mutableAggBufferOffset: Int def update(mutableAggBuffer: InternalRow, inputRow: InternalRow): Unit def withNewInputAggBufferOffset(newInputAggBufferOffset: Int): ImperativeAggregate def withNewMutableAggBufferOffset(newMutableAggBufferOffset: Int): ImperativeAggregate }
.ImperativeAggregate Contract [cols="1,2",options="header",width="100%"] |=== | Method | Description
| [[initialize]] initialize
a|
Used when:
-
AggregateProcessor
is initialized (for window aggregate functions) -
AggregationIterator, ObjectAggregationIterator, TungstenAggregationIterator (for aggregate functions)
[[inputAggBufferOffset]] inputAggBufferOffset |
---|
| [[merge]] merge
a|
Used when:
AggregationIterator
does generateProcessRow (for aggregate functions)
[[mutableAggBufferOffset]] mutableAggBufferOffset |
---|
| [[update]] update
a|
Used when:
AggregateProcessor
is updated (for window aggregate functions)- AggregationIterator (for aggregate functions)
[[withNewInputAggBufferOffset]] withNewInputAggBufferOffset |
---|
[[withNewMutableAggBufferOffset]] withNewMutableAggBufferOffset |
---|
=== |