我有一个简单的apache-flink代码,如下所示:
// Parse the data, group it, window it, and aggregate the counts
DataStream<WordWithCount> windowCounts = source
.flatMap(new FlatMapFunction<String, WordWithCount>() {
@Override
public void flatMap(String value, Collector<WordWithCount> out) {
for (String word : value.split(" ")) {
out.collect(new WordWithCount(word, 1));
}
}
})
.keyBy("word")
.timeWindow(Time.seconds(PROCESSING_WINDOW_TIME))
.process(new WordProcessingWindowFunction());
在flatMap函数中,如果我发现单词的条件并想立即触发流程函数,该怎么办? 预先感谢!
答案 0 :(得分:0)
您可以使用自定义触发器来触发时间窗口,以防出现预期的元素。
.timeWindow(Time.seconds(PROCESSING_WINDOW_TIME))
.trigger(new YourCustomTrigger())
.xxx
答案 1 :(得分:0)
或者,您可以在flatMap之后拆分流(或将flatMap替换为使用侧面输出的ProcessFunction),然后通过窗口及其ProcessWindowFunction发送一个输出流,并通过特殊字词发送另一个流其他一些(相关)功能。最后,如果需要,您可以使用联合将流融合在一起。