【发布时间】:2018-03-13 09:20:33
【问题描述】:
我的用例是我想将不同的 CEP 模式应用于同一数据流。 CEP 模式是动态的,我希望将它们添加到 flink 而不必重新启动作业。虽然所有条件都可以通过实现 IterativeCondition 的自定义类来处理,但我的主要问题是时间条件只接受 TimeWindow;这是无法处理的。是否有某种方法可以根据输入元素设置传递给 .within() 的值?
这里问过类似的问题:Flink and Dynamic templates recognition
最佳答案: “可以添加的是一个平面映射运算符,它在一个输入通道上接收事件,在另一个输入通道上接收模式。对于每个新接收的模式,一个要么更新现有的 NFA(缺少此功能),要么编译一个新的. 在后一种情况下,可以将传入事件应用于所有存储的 NFA。”
我正在尝试实现这一点,但我遇到了一些困难。具体来说,关于“在后一种情况下,将传入事件应用于所有存储的 NFA”
我将流应用到模式的原因是:PatternStream matchStream = CEP.pattern(tmatchStream, pattern);
但流“tmatchStream”不会在 co-flatMap 中定义。我在这里错过了什么吗???任何帮助将不胜感激。
【问题讨论】:
标签: apache-flink flink-streaming flink-cep