Class KeyedProcessFunction<K,​I,​O>

  • Type Parameters:
    K - Type of the key.
    I - Type of the input elements.
    O - Type of the output elements.
    All Implemented Interfaces:
    Serializable, org.apache.flink.api.common.functions.Function, org.apache.flink.api.common.functions.RichFunction
    Direct Known Subclasses:
    DeclaringAsyncKeyedProcessFunction

    @PublicEvolving
    public abstract class KeyedProcessFunction<K,​I,​O>
    extends org.apache.flink.api.common.functions.AbstractRichFunction
    A keyed function that processes elements of a stream.

    For every element in the input stream #processElement(Object, Context, Collector) is invoked. This can produce zero or more elements as output. Implementations can also query the time and set timers through the provided KeyedProcessFunction.Context. For firing timers #onTimer(long, OnTimerContext, Collector) will be invoked. This can again produce zero or more elements as output and register further timers.

    NOTE: Access to keyed state and timers (which are also scoped to a key) is only available if the KeyedProcessFunction is applied on a KeyedStream.

    NOTE: A KeyedProcessFunction is always a RichFunction. Therefore, access to the RuntimeContext is always available and setup and teardown methods can be implemented. See RichFunction.open(OpenContext) and RichFunction.close().

    See Also:
    Serialized Form
    • Constructor Detail

      • KeyedProcessFunction

        public KeyedProcessFunction()
    • Method Detail

      • processElement

        public abstract void processElement​(I value,
                                            KeyedProcessFunction.Context ctx,
                                            org.apache.flink.util.Collector<O> out)
                                     throws Exception
        Process one element from the input stream.

        This function can output zero or more elements using the Collector parameter and also update internal state or set timers using the KeyedProcessFunction.Context parameter.

        Parameters:
        value - The input value.
        ctx - A KeyedProcessFunction.Context that allows querying the timestamp of the element and getting a TimerService for registering timers and querying the time. The context is only valid during the invocation of this method, do not store it.
        out - The collector for returning result values.
        Throws:
        Exception - This method may throw exceptions. Throwing an exception will cause the operation to fail and may trigger recovery.
      • onTimer

        public void onTimer​(long timestamp,
                            KeyedProcessFunction.OnTimerContext ctx,
                            org.apache.flink.util.Collector<O> out)
                     throws Exception
        Called when a timer set using TimerService fires.
        Parameters:
        timestamp - The timestamp of the firing timer.
        ctx - An KeyedProcessFunction.OnTimerContext that allows querying the timestamp, the TimeDomain, and the key of the firing timer and getting a TimerService for registering timers and querying the time. The context is only valid during the invocation of this method, do not store it.
        out - The collector for returning result values.
        Throws:
        Exception - This method may throw exceptions. Throwing an exception will cause the operation to fail and may trigger recovery.