在Apache Flink中动态添加模式而无需重新启动作业

时间:2018-03-13 09:20:34

标签: apache-flink flink-streaming flink-cep

我的用例是我想将不同的CEP模式应用于同一个数据流。 CEP模式动态变化我希望将它们添加到flink而不必重新启动作业。虽然可以通过实现IterativeCondition的自定义类来处理所有条件,但我的主要问题是时间条件只接受TimeWindow;这是无法处理的。是否有某种方法可以根据输入元素设置传递给.within()的值?

这里有类似的问题:Flink and Dynamic templates recognition

最佳答案: "可以添加的是一个共平图操作符,它在一个输入通道上接收事件和其他输入通道模式。对于每个新接收的模式,要么更新现有的NFA(缺少此功能),要么编译新的模式。在后一种情况下,可以将传入事件应用于所有存储的NFA。"

我正在努力实现这一点但我面临一些困难。具体而言,在"在后一种情况下,可以将传入事件应用于所有存储的NFA"

原因是我使用以下方法将流应用于模式:PatternStream matchStream = CEP.pattern(tmatchStream,pattern);

但是流" tmatchStream"不会在co-flatMap中定义。我在这里遗漏了什么吗???任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

不幸的是,链接问题的答案仍然有效。 Flink CEP当时不支持动态模式。尽管如此,已有JIRA票证:FLINK-7129

该功能的最早合理目标版本为1.6.0