Class WindowOperator<K,W extends Window>
- Type Parameters:
K- The type of key returned by theKeySelector.W- The type ofWindowthat theWindowAssignerassigns.
- All Implemented Interfaces:
Serializable,org.apache.flink.api.common.state.CheckpointListener,org.apache.flink.streaming.api.operators.Input<org.apache.flink.table.data.RowData>,org.apache.flink.streaming.api.operators.KeyContext,org.apache.flink.streaming.api.operators.KeyContextHandler,org.apache.flink.streaming.api.operators.OneInputStreamOperator<org.apache.flink.table.data.RowData,,org.apache.flink.table.data.RowData> org.apache.flink.streaming.api.operators.StreamOperator<org.apache.flink.table.data.RowData>,org.apache.flink.streaming.api.operators.StreamOperatorStateHandler.CheckpointedStreamOperator,org.apache.flink.streaming.api.operators.Triggerable<K,,W> org.apache.flink.streaming.api.operators.YieldingOperator<org.apache.flink.table.data.RowData>
- Direct Known Subclasses:
AggregateWindowOperator,TableAggregateWindowOperator
GroupWindowAssigner and
Trigger.
This is the base class for AggregateWindowOperator and TableAggregateWindowOperator. The big difference between AggregateWindowOperator and
TableAggregateWindowOperator is AggregateWindowOperator emits only one result for
each aggregate group, while TableAggregateWindowOperator can emit multi results for each
aggregate group.
When an element arrives it gets assigned a key using a KeySelector and it gets
assigned to zero or more windows using a GroupWindowAssigner. Based on this, the element
is put into panes. A pane is the bucket of elements that have the same key and same
Window. An element can be in multiple panes if it was assigned to multiple windows by the
WindowAssigner.
Each pane gets its own instance of the provided Trigger. This trigger determines when
the contents of the pane should be processed to emit results. When a trigger fires, the given
NamespaceAggsHandleFunctionBase is invoked to
produce the results that are emitted for the pane to which the Trigger belongs.
The parameter types: <IN>: RowData <OUT>: JoinedRowData(KEY, AGG_RESULT)
<KEY>: GenericRowData <AGG_RESULT>: GenericRowData <ACC>: GenericRowData
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected org.apache.flink.streaming.api.operators.TimestampedCollector<org.apache.flink.table.data.RowData>This is used for emitting elements with a given timestamp.protected org.apache.flink.runtime.state.internal.InternalValueState<K,W, org.apache.flink.table.data.RowData> protected final booleanprotected final RecordCounterUsed to count the number of added and retracted input records.protected final ZoneIdThe shift timezone of the window, if the proctime or rowtime type is TIMESTAMP_LTZ, the shift timezone is the timezone user configured in TableConfig, other cases the timezone is UTC which means never shift when assigning windows.protected NamespaceAggsHandleFunctionBase<W>protected InternalWindowProcessFunction<K,W> Fields inherited from class org.apache.flink.streaming.api.operators.AbstractStreamOperator
combinedWatermark, config, lastRecordAttributes1, lastRecordAttributes2, latencyStats, LOG, metrics, output, processingTimeService, stateHandler, stateKeySelector1, stateKeySelector2, timeServiceManager -
Method Summary
Modifier and TypeMethodDescriptionvoidclose()protected abstract voidprotected abstract voidemitWindowResult(W window) Emits the window result of the given window.protected org.apache.flink.metrics.Counterprotected org.apache.flink.metrics.Gauge<Long>voidonEventTime(org.apache.flink.streaming.api.operators.InternalTimer<K, W> timer) voidonProcessingTime(org.apache.flink.streaming.api.operators.InternalTimer<K, W> timer) voidopen()voidprocessElement(org.apache.flink.streaming.runtime.streamrecord.StreamRecord<org.apache.flink.table.data.RowData> record) booleanMethods inherited from class org.apache.flink.streaming.api.operators.AbstractStreamOperator
beforeInitializeStateHandler, finish, getContainingTask, getCurrentKey, getExecutionConfig, getInternalTimerService, getKeyedStateBackend, getKeyedStateStore, getMetricGroup, getOperatorConfig, getOperatorID, getOperatorName, getOperatorStateBackend, getOrCreateKeyedState, getPartitionedState, getPartitionedState, getProcessingTimeService, getRuntimeContext, getStateKeySelector1, getStateKeySelector2, getTimeServiceManager, getUserCodeClassloader, hasKeyContext1, hasKeyContext2, initializeState, initializeState, isAsyncStateProcessingEnabled, isUsingCustomRawKeyedState, notifyCheckpointAborted, notifyCheckpointComplete, prepareSnapshotPreBarrier, processLatencyMarker, processLatencyMarker1, processLatencyMarker2, processRecordAttributes, processRecordAttributes1, processRecordAttributes2, processWatermark, processWatermark, processWatermark1, processWatermark1, processWatermark2, processWatermark2, processWatermarkStatus, processWatermarkStatus, processWatermarkStatus1, processWatermarkStatus2, reportOrForwardLatencyMarker, setCurrentKey, setKeyContextElement1, setKeyContextElement2, setMailboxExecutor, setProcessingTimeService, setup, snapshotState, snapshotStateMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.apache.flink.api.common.state.CheckpointListener
notifyCheckpointAborted, notifyCheckpointCompleteMethods inherited from interface org.apache.flink.streaming.api.operators.Input
processLatencyMarker, processRecordAttributes, processWatermark, processWatermark, processWatermarkStatusMethods inherited from interface org.apache.flink.streaming.api.operators.KeyContext
getCurrentKey, setCurrentKeyMethods inherited from interface org.apache.flink.streaming.api.operators.KeyContextHandler
hasKeyContextMethods inherited from interface org.apache.flink.streaming.api.operators.OneInputStreamOperator
setKeyContextElementMethods inherited from interface org.apache.flink.streaming.api.operators.StreamOperator
finish, getMetricGroup, getOperatorAttributes, getOperatorID, initializeState, prepareSnapshotPreBarrier, setKeyContextElement1, setKeyContextElement2, snapshotState
-
Field Details
-
produceUpdates
protected final boolean produceUpdates -
shiftTimeZone
The shift timezone of the window, if the proctime or rowtime type is TIMESTAMP_LTZ, the shift timezone is the timezone user configured in TableConfig, other cases the timezone is UTC which means never shift when assigning windows. -
recordCounter
Used to count the number of added and retracted input records. -
windowAggregator
-
windowFunction
-
collector
protected transient org.apache.flink.streaming.api.operators.TimestampedCollector<org.apache.flink.table.data.RowData> collectorThis is used for emitting elements with a given timestamp. -
previousState
-
-
Method Details
-
useSplittableTimers
public boolean useSplittableTimers()- Overrides:
useSplittableTimersin classorg.apache.flink.streaming.api.operators.AbstractStreamOperator<org.apache.flink.table.data.RowData>
-
compileGeneratedCode
protected abstract void compileGeneratedCode() -
open
-
close
-
processElement
public void processElement(org.apache.flink.streaming.runtime.streamrecord.StreamRecord<org.apache.flink.table.data.RowData> record) throws Exception -
onEventTime
-
onProcessingTime
-
emitWindowResult
Emits the window result of the given window.- Throws:
Exception
-
getNumLateRecordsDropped
protected org.apache.flink.metrics.Counter getNumLateRecordsDropped() -
getWatermarkLatency
-