在 Apache Flink 中动态添加模式而不重新启动作业
Posted
技术标签:
【中文标题】在 Apache Flink 中动态添加模式而不重新启动作业【英文标题】:Adding patterns dynamically in Apache Flink without restarting job 【发布时间】: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 中定义。我在这里错过了什么吗???任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:很遗憾,链接问题的答案仍然有效。 Flink CEP 目前不支持动态模式。不过,已经有一张 JIRA 票:FLINK-7129
该功能的最早合理目标版本将是 1.6.0
【讨论】:
这个还没实现?以上是关于在 Apache Flink 中动态添加模式而不重新启动作业的主要内容,如果未能解决你的问题,请参考以下文章
在 Bootstrap 中,如何使用模态重定向到一个部分(而不重定向到打开模态的位置)
在 Angular 中执行 Http get 方法而不重试并等到服务器发送响应?