prepare(rows: ExternalAppendOnlyUnsafeRowArray): Unit
WindowFunctionFrame
| Name | Description |
|---|---|
|
|
|
|
|
|
UnboundedWindowFunctionFrame
UnboundedWindowFunctionFrame is a WindowFunctionFrame that gives the same value for every row in a partition.
UnboundedWindowFunctionFrame is created for AggregateFunctions (in AggregateExpressions) or AggregateWindowFunctions with no frame defined (i.e. no rowsBetween or rangeBetween) that boils down to using the entire partition frame.
UnboundedWindowFunctionFrame takes the following when created:
-
Target InternalRow
prepare Method
prepare requests AggregateProcessor to initialize passing in the number of UnsafeRows in the input ExternalAppendOnlyUnsafeRowArray.
prepare then requests ExternalAppendOnlyUnsafeRowArray to generate an interator.
In the end, prepare requests AggregateProcessor to update passing in every UnsafeRow in the iterator one at a time.
write Method
write(index: Int, current: InternalRow): Unit
write simply requests AggregateProcessor to evaluate the target InternalRow.
WindowFunctionFrame Contract
package org.apache.spark.sql.execution.window
abstract class WindowFunctionFrame {
def prepare(rows: ExternalAppendOnlyUnsafeRowArray): Unit
def write(index: Int, current: InternalRow): Unit
}
|
Note
|
WindowFunctionFrame is a private[window] contract.
|
| Method | Description |
|---|---|
Used exclusively when |
|
Used exclusively when the Iterator[InternalRow] (from executing |