Class WindowsGrouping
- java.lang.Object
-
- org.apache.flink.table.runtime.operators.window.grouping.WindowsGrouping
-
- All Implemented Interfaces:
Closeable
,AutoCloseable
- Direct Known Subclasses:
HeapWindowsGrouping
public abstract class WindowsGrouping extends Object implements Closeable
Assigning windows from the sorted input buffers.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 inWindowsGrouping
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
, andHeapWindowsGrouping
is basically okay.
-
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
addInputToBuffer(BinaryRowData input)
protected abstract void
addIntoBuffer(BinaryRowData input)
void
advanceWatermarkToTriggerAllWindows()
Advance the watermark to trigger all the possible windows.RowIterator<BinaryRowData>
buildTriggerWindowElementsIterator()
TimeWindow
getTriggerWindow()
boolean
hasTriggerWindow()
Check if there are windows could be triggered according to the current watermark.protected abstract RowIterator<BinaryRowData>
newBufferIterator(int startIndex)
protected abstract void
onBufferEvict(int limitIndex)
void
reset()
Reset for next group.protected abstract void
resetBuffer()
-
-
-
Method Detail
-
reset
public void reset()
Reset for next group.
-
addInputToBuffer
public void addInputToBuffer(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<BinaryRowData> buildTriggerWindowElementsIterator()
- Returns:
- the iterator of the next triggerable window's elements.
-
getTriggerWindow
public TimeWindow getTriggerWindow()
- Returns:
- the last triggered window.
-
resetBuffer
protected abstract void resetBuffer()
-
addIntoBuffer
protected abstract void addIntoBuffer(BinaryRowData input) throws IOException
- Throws:
IOException
-
onBufferEvict
protected abstract void onBufferEvict(int limitIndex)
-
newBufferIterator
protected abstract RowIterator<BinaryRowData> newBufferIterator(int startIndex)
-
-