在 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 方法而不重试并等到服务器发送响应?

附加链接而不重定向

Flink 官宣 | Apache Flink 1.12.0 正式发布,流批一体真正统一运行!

javascript更改get参数而不重定向[重复]