Class 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 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 Detail

      • reset

        public void reset()
        Reset for next group.
      • 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()
      • onBufferEvict

        protected abstract void onBufferEvict​(int limitIndex)