基于key列表触发apache flink的ProcessWindow函数

问题描述 投票:0回答:1

我有一个奇怪的需求,我正在使用 Apache Flink 处理 Kafka 源的数据流。我想要进行有状态处理并保留窗口之间所有已处理键的全局状态。我的要求是为每个窗口的所有键提供输出,无论该键是否存在于当前窗口数据中。如何实现这一目标?我认为每个输入数据分区都会触发窗口。

    SingleOutputStreamOperator<OutputPojo> output =  inputDataStream
            .keyBy( inputPojo-> inputPojo.getKey() )
            .window(TumblingEventTimeWindows.of(Time.minutes(windowDuration)))
            .sideOutputLateData(outputTag)
            .process(new WindowProcess());
apache-flink flink-streaming
1个回答
0
投票

Flink 的窗口 API 并非旨在支持此操作,并且没有简单的方法可以实现此目的。

我将使用 KeyedProcessFunction 来实现它。幸运的是,Flink 文档中有一个示例可以帮助您完成大部分工作:https://nightlies.apache.org/flink/flink-docs-stable/docs/learn-flink/event_driven/

© www.soinside.com 2019 - 2024. All rights reserved.