java.lang.Object
org.apache.flink.table.runtime.operators.aggregate.window.buffers.RecordsWindowBuffer
All Implemented Interfaces:
WindowBuffer

public final class RecordsWindowBuffer extends Object implements WindowBuffer
An implementation of WindowBuffer that buffers input elements in a WindowBytesMultiMap and combines buffered elements into state when flushing.
  • Constructor Details

    • RecordsWindowBuffer

      public RecordsWindowBuffer(Object operatorOwner, org.apache.flink.runtime.memory.MemoryManager memoryManager, long memorySize, RecordsCombiner combineFunction, PagedTypeSerializer<org.apache.flink.table.data.RowData> keySer, AbstractRowDataSerializer<org.apache.flink.table.data.RowData> inputSer, boolean requiresCopy, ZoneId shiftTimeZone)
  • Method Details

    • addElement

      public void addElement(org.apache.flink.table.data.RowData key, long sliceEnd, org.apache.flink.table.data.RowData element) throws Exception
      Description copied from interface: WindowBuffer
      Adds an element with associated key into the buffer. The buffer may temporarily buffer the element, or immediately write it to the stream.

      It may be that adding this element fills up an internal buffer and causes the buffer flushing of a batch of internally buffered elements.

      Specified by:
      addElement in interface WindowBuffer
      Parameters:
      key - the key associated with the element
      element - The element to add.
      Throws:
      Exception - Thrown, if the element cannot be added to the buffer, or if the flushing throws an exception.
    • advanceProgress

      public void advanceProgress(long progress) throws Exception
      Description copied from interface: WindowBuffer
      Advances the progress time, the progress time is watermark if working in event-time mode, or current processing time if working in processing-time mode.

      This will potentially flush buffered data into states or to the output stream, because the watermark advancement may be in a very small step, but we don't need to flush buffered data for every watermark advancement.

      Specified by:
      advanceProgress in interface WindowBuffer
      Parameters:
      progress - the current progress time
      Throws:
      Exception
    • flush

      public void flush() throws Exception
      Description copied from interface: WindowBuffer
      Flushes all intermediate buffered data to the underlying backend or output stream.
      Specified by:
      flush in interface WindowBuffer
      Throws:
      Exception - Thrown if the buffer cannot be flushed, or if the output stream throws an exception.
    • close

      public void close() throws Exception
      Description copied from interface: WindowBuffer
      Release resources allocated by this buffer.
      Specified by:
      close in interface WindowBuffer
      Throws:
      Exception