Class AsyncWindowOperator<K,IN,ACC,OUT,W extends Window>
- Type Parameters:
K- The type of key returned by theKeySelector.IN- The type of the incoming elements.OUT- The type of elements emitted by theInternalWindowFunction.W- The type ofWindowthat theWindowAssignerassigns.
- All Implemented Interfaces:
Serializable,org.apache.flink.api.common.state.CheckpointListener,Input<IN>,KeyContext,KeyContextHandler,OneInputStreamOperator<IN,,OUT> org.apache.flink.streaming.api.operators.OutputTypeConfigurable<OUT>,StreamOperator<OUT>,StreamOperatorStateHandler.CheckpointedStreamOperator,Triggerable<K,,W> UserFunctionProvider<InternalAsyncWindowFunction<ACC,,OUT, K, W>> YieldingOperator<OUT>,AsyncStateProcessing,AsyncStateProcessingOperator
- Direct Known Subclasses:
AsyncEvictingWindowOperator
WindowAssigner and AsyncTrigger. This is the async state access version of WindowOperator.
When an element arrives it gets assigned a key using a KeySelector and it gets
assigned to zero or more windows using a WindowAssigner. 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
InternalWindowFunction is invoked to produce the results that are emitted for the pane to
which the Trigger belongs.
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionclassBase class for per-windowKeyedStateStores.classContextis a utility for handlingAsyncTriggerinvocations.classRegular per-window state store for use withProcessWindowFunction.classA utility class for handlingProcessWindowFunctioninvocations. -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final longThe allowed lateness for elements.protected InternalTimerService<W>protected final org.apache.flink.api.common.typeutils.TypeSerializer<K>For serializing the key in checkpoints.protected final org.apache.flink.util.OutputTag<IN>OutputTagto use for late arriving events.protected org.apache.flink.metrics.Counterprotected AsyncWindowOperator<K,IN, ACC, OUT, W>.WindowContext protected TimestampedCollectorWithDeclaredVariable<OUT>This is given to theInternalWindowFunctionfor emitting elements with a given timestamp.protected final WindowAssigner<? super IN,W> protected WindowAssigner.WindowAssignerContextprotected DeclaredVariable<W>protected final org.apache.flink.api.common.typeutils.TypeSerializer<W>For serializing the window in checkpoints.Fields inherited from class org.apache.flink.runtime.asyncprocessing.operators.AbstractAsyncStateUdfStreamOperator
declarationContext, userFunctionFields inherited from class org.apache.flink.runtime.asyncprocessing.operators.AbstractAsyncStateStreamOperator
declarationManagerFields inherited from class org.apache.flink.streaming.api.operators.AbstractStreamOperator
combinedWatermark, config, lastRecordAttributes1, lastRecordAttributes2, latencyStats, metrics, output, processingTimeService, stateHandler, stateKeySelector1, stateKeySelector2, timeServiceManager -
Constructor Summary
ConstructorsConstructorDescriptionAsyncWindowOperator(WindowAssigner<? super IN, W> windowAssigner, org.apache.flink.api.common.typeutils.TypeSerializer<W> windowSerializer, org.apache.flink.api.java.functions.KeySelector<IN, K> keySelector, org.apache.flink.api.common.typeutils.TypeSerializer<K> keySerializer, org.apache.flink.api.common.state.v2.StateDescriptor<?> windowStateDescriptor, InternalAsyncWindowFunction<ACC, OUT, K, W> windowFunction, AsyncTrigger<? super IN, ? super W> trigger, long allowedLateness, org.apache.flink.util.OutputTag<IN> lateDataOutputTag) Creates a newWindowOperatorbased on the given policies and user functions. -
Method Summary
Modifier and TypeMethodDescriptionvoidclose()This method is called at the very end of the operator's life, both in the case of a successful completion of the operation, and in the case of a failure and canceling.protected voiddeleteCleanupTimer(W window) Deletes the cleanup timer set for the contents of the provided window.Called to get the OperatorAttributes of the operator.org.apache.flink.api.common.state.v2.StateDescriptor<?>AsyncTrigger<? super IN,? super W> WindowAssigner<? super IN,W> protected final booleanisCleanupTime(W window, long time) Returnstrueif the given time is the cleanup time for the given window.protected booleanisElementLate(StreamRecord<IN> element) Decide if a record is currently late, based on current watermark and allowed lateness.protected booleanisWindowLate(W window) Returnstrueif the watermark is after the end timestamp plus the allowed lateness of the given window.voidonEventTime(InternalTimer<K, W> timer) Invoked when an event-time timer fires.voidonProcessingTime(InternalTimer<K, W> timer) Invoked when a processing-time timer fires.voidopen()This method is called immediately before any elements are processed, it should contain the operator's initialization logic, e.g. state initialization.voidprocessElement(StreamRecord<IN> element) Processes one element that arrived on this input of theMultipleInputStreamOperator.protected voidregisterCleanupTimer(W window) Registers a timer to cleanup the content of the window.voidsetup(StreamTask<?, ?> containingTask, StreamConfig config, Output<StreamRecord<OUT>> output) protected voidsideOutput(StreamRecord<IN> element) Write skipped late arriving element to SideOutput.Methods inherited from class org.apache.flink.runtime.asyncprocessing.operators.AbstractAsyncStateUdfStreamOperator
finish, getUserFunction, initializeState, notifyCheckpointAborted, notifyCheckpointComplete, setOutputType, snapshotStateMethods inherited from class org.apache.flink.runtime.asyncprocessing.operators.AbstractAsyncStateStreamOperator
asyncProcessWithKey, beforeInitializeStateHandler, drainStateRequests, getAsyncKeyedStateBackend, getCurrentKey, getDeclarationManager, getElementOrder, getInternalTimerService, getOrCreateKeyedState, getRecordProcessor, isAsyncStateProcessingEnabled, newKeySelected, postProcessElement, postProcessWatermark, prepareSnapshotPreBarrier, preProcessWatermark, preserveRecordOrderAndProcess, processRecordAttributes, processRecordAttributes1, processRecordAttributes2, processWatermark, processWatermark, processWatermark1, processWatermark1Internal, processWatermark2, processWatermark2Internal, processWatermarkInternal, processWatermarkStatus, processWatermarkStatus, reportOrForwardLatencyMarker, setAsyncKeyedContextElement, setKeyContextElement1, setKeyContextElement2Methods inherited from class org.apache.flink.streaming.api.operators.AbstractStreamOperator
getContainingTask, getExecutionConfig, getKeyedStateBackend, getKeyedStateStore, getMetricGroup, getOperatorConfig, getOperatorID, getOperatorName, getOperatorStateBackend, getOrCreateKeyedState, getPartitionedState, getPartitionedState, getProcessingTimeService, getRuntimeContext, getStateKeySelector1, getStateKeySelector2, getTimeServiceManager, getUserCodeClassloader, hasKeyContext1, hasKeyContext2, initializeState, isUsingCustomRawKeyedState, processLatencyMarker, processLatencyMarker1, processLatencyMarker2, processWatermark1, processWatermark2, processWatermarkStatus1, processWatermarkStatus2, setCurrentKey, setMailboxExecutor, setProcessingTimeService, snapshotState, useSplittableTimersMethods 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, getOperatorID, initializeState, prepareSnapshotPreBarrier, setKeyContextElement1, setKeyContextElement2, snapshotState
-
Field Details
-
windowAssigner
-
keySerializer
For serializing the key in checkpoints. -
windowSerializer
protected final org.apache.flink.api.common.typeutils.TypeSerializer<W extends Window> windowSerializerFor serializing the window in checkpoints. -
allowedLateness
protected final long allowedLatenessThe allowed lateness for elements. This is used for:- Deciding if an element should be dropped from a window due to lateness.
- Clearing the state of a window if the system time passes the
window.maxTimestamp + allowedLatenesslandmark.
-
lateDataOutputTag
OutputTagto use for late arriving events. Elements for whichwindow.maxTimestamp + allowedLatenessis smaller than the current watermark will be emitted to this. -
numLateRecordsDropped
protected transient org.apache.flink.metrics.Counter numLateRecordsDropped -
timestampedCollector
This is given to theInternalWindowFunctionfor emitting elements with a given timestamp. -
triggerContext
-
processContext
-
windowDeclaredVariable
-
windowAssignerContext
-
internalTimerService
-
-
Constructor Details
-
AsyncWindowOperator
public AsyncWindowOperator(WindowAssigner<? super IN, W> windowAssigner, org.apache.flink.api.common.typeutils.TypeSerializer<W> windowSerializer, org.apache.flink.api.java.functions.KeySelector<IN, K> keySelector, org.apache.flink.api.common.typeutils.TypeSerializer<K> keySerializer, org.apache.flink.api.common.state.v2.StateDescriptor<?> windowStateDescriptor, InternalAsyncWindowFunction<ACC, OUT, K, W> windowFunction, AsyncTrigger<? super IN, ? super W> trigger, long allowedLateness, org.apache.flink.util.OutputTag<IN> lateDataOutputTag) Creates a newWindowOperatorbased on the given policies and user functions.
-
-
Method Details
-
setup
public void setup(StreamTask<?, ?> containingTask, StreamConfig config, Output<StreamRecord<OUT>> output) - Overrides:
setupin classAbstractAsyncStateUdfStreamOperator<OUT,InternalAsyncWindowFunction<ACC, OUT, K, W extends Window>>
-
open
Description copied from class:AbstractStreamOperatorThis method is called immediately before any elements are processed, it should contain the operator's initialization logic, e.g. state initialization.The default implementation does nothing.
- Specified by:
openin interfaceStreamOperator<K>- Overrides:
openin classAbstractAsyncStateUdfStreamOperator<OUT,InternalAsyncWindowFunction<ACC, OUT, K, W extends Window>> - Throws:
Exception- An exception in this method causes the operator to fail.
-
close
Description copied from interface:StreamOperatorThis method is called at the very end of the operator's life, both in the case of a successful completion of the operation, and in the case of a failure and canceling.This method is expected to make a thorough effort to release all resources that the operator has acquired.
NOTE:It can not emit any records! If you need to emit records at the end of processing, do so in the
StreamOperator.finish()method.- Specified by:
closein interfaceStreamOperator<K>- Overrides:
closein classAbstractAsyncStateUdfStreamOperator<OUT,InternalAsyncWindowFunction<ACC, OUT, K, W extends Window>> - Throws:
Exception
-
processElement
Description copied from interface:InputProcesses one element that arrived on this input of theMultipleInputStreamOperator. This method is guaranteed to not be called concurrently with other methods of the operator.- Specified by:
processElementin interfaceInput<K>- Throws:
Exception
-
onEventTime
Description copied from interface:TriggerableInvoked when an event-time timer fires.- Specified by:
onEventTimein interfaceTriggerable<K,IN> - Throws:
Exception
-
onProcessingTime
Description copied from interface:TriggerableInvoked when a processing-time timer fires.- Specified by:
onProcessingTimein interfaceTriggerable<K,IN> - Throws:
Exception
-
getOperatorAttributes
Description copied from interface:StreamOperatorCalled to get the OperatorAttributes of the operator. If there is no defined attribute, a default OperatorAttributes is built.- Specified by:
getOperatorAttributesin interfaceStreamOperator<K>- Returns:
- OperatorAttributes of the operator.
-
sideOutput
Write skipped late arriving element to SideOutput.- Parameters:
element- skipped late arriving element to side output
-
isWindowLate
Returnstrueif the watermark is after the end timestamp plus the allowed lateness of the given window. -
isElementLate
Decide if a record is currently late, based on current watermark and allowed lateness.- Parameters:
element- The element to check- Returns:
- The element for which should be considered when sideoutputs
-
registerCleanupTimer
Registers a timer to cleanup the content of the window.- Parameters:
window- the window whose state to discard
-
deleteCleanupTimer
Deletes the cleanup timer set for the contents of the provided window.- Parameters:
window- the window whose state to discard
-
isCleanupTime
Returnstrueif the given time is the cleanup time for the given window. -
getTrigger
-
getKeySelector
-
getWindowAssigner
-
getStateDescriptor
@VisibleForTesting public org.apache.flink.api.common.state.v2.StateDescriptor<?> getStateDescriptor() -
getProcessContext
-
getWindowAssignerContext
-