Class WindowsGrouping
- All Implemented Interfaces:
Closeable,AutoCloseable
- Direct Known Subclasses:
HeapWindowsGrouping
Assign windows and trigger aggregate calculation based on WindowsGrouping. It can
avoid data expansion in time sliding window case.
Tumbling window case Each keyed window corresponds to only one element in the WindowsGrouping Buffer (grouping keys, assigned windows, agg buffers).
Sliding window case 1. If the assign pane optimization strategy is used, each keyed window
corresponding to WindowsGrouping buffer contains windowsSize/paneSize number of elements
(assuming 1s/24h window, there are 86400 elements). 2. Otherwise, the maximum number of elements
in WindowsGrouping buffer is the maximum number of inputs in a sliding window.
In most cases, assign pane optimization should be applied, so there should not be much data in
WindowsGrouping, and HeapWindowsGrouping is basically okay.
-
Method Summary
Modifier and TypeMethodDescriptionvoidaddInputToBuffer(org.apache.flink.table.data.binary.BinaryRowData input) protected abstract voidaddIntoBuffer(org.apache.flink.table.data.binary.BinaryRowData input) voidAdvance the watermark to trigger all the possible windows.RowIterator<org.apache.flink.table.data.binary.BinaryRowData>booleanCheck if there are windows could be triggered according to the current watermark.protected abstract RowIterator<org.apache.flink.table.data.binary.BinaryRowData>newBufferIterator(int startIndex) protected abstract voidonBufferEvict(int limitIndex) voidreset()Reset for next group.protected abstract void
-
Method Details
-
reset
public void reset()Reset for next group. -
addInputToBuffer
public void addInputToBuffer(org.apache.flink.table.data.binary.BinaryRowData input) throws IOException - Throws:
IOException
-
advanceWatermarkToTriggerAllWindows
public void advanceWatermarkToTriggerAllWindows()Advance the watermark to trigger all the possible windows. It is designed to be idempotent. -
hasTriggerWindow
public boolean hasTriggerWindow()Check if there are windows could be triggered according to the current watermark.- Returns:
- true when there are windows to be triggered. It is designed to be idempotent.
-
buildTriggerWindowElementsIterator
public RowIterator<org.apache.flink.table.data.binary.BinaryRowData> buildTriggerWindowElementsIterator()- Returns:
- the iterator of the next triggerable window's elements.
-
getTriggerWindow
- Returns:
- the last triggered window.
-
resetBuffer
protected abstract void resetBuffer() -
addIntoBuffer
protected abstract void addIntoBuffer(org.apache.flink.table.data.binary.BinaryRowData input) throws IOException - Throws:
IOException
-
onBufferEvict
protected abstract void onBufferEvict(int limitIndex) -
newBufferIterator
protected abstract RowIterator<org.apache.flink.table.data.binary.BinaryRowData> newBufferIterator(int startIndex)
-