Class RecordsWindowBuffer
- 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 ofWindowBuffer
that buffers input elements in aWindowBytesMultiMap
and combines buffered elements into state when flushing.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
RecordsWindowBuffer.Factory
Factory to createRecordsWindowBuffer
withRecordsCombiner.Factory
.static class
RecordsWindowBuffer.LocalFactory
Factory to createRecordsWindowBuffer
withRecordsCombiner.LocalFactory
.
-
Constructor Summary
Constructors Constructor Description RecordsWindowBuffer(Object operatorOwner, MemoryManager memoryManager, long memorySize, RecordsCombiner combineFunction, PagedTypeSerializer<RowData> keySer, AbstractRowDataSerializer<RowData> inputSer, boolean requiresCopy, ZoneId shiftTimeZone)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addElement(RowData key, long sliceEnd, RowData element)
Adds an element with associated key into the buffer.void
advanceProgress(long progress)
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.void
close()
Release resources allocated by this buffer.void
flush()
Flushes all intermediate buffered data to the underlying backend or output stream.
-
-
-
Constructor Detail
-
RecordsWindowBuffer
public RecordsWindowBuffer(Object operatorOwner, MemoryManager memoryManager, long memorySize, RecordsCombiner combineFunction, PagedTypeSerializer<RowData> keySer, AbstractRowDataSerializer<RowData> inputSer, boolean requiresCopy, ZoneId shiftTimeZone)
-
-
Method Detail
-
addElement
public void addElement(RowData key, long sliceEnd, 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 interfaceWindowBuffer
- Parameters:
key
- the key associated with the elementelement
- 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 interfaceWindowBuffer
- 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 interfaceWindowBuffer
- 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 interfaceWindowBuffer
- Throws:
Exception
-
-