Apache flink 如何让Flink过程为同一时间窗口评估多个独立条件

Apache flink 如何让Flink过程为同一时间窗口评估多个独立条件,apache-flink,Apache Flink,因此,我们在kafka源代码中有10分钟窗口内的事件a、b、c、x、y、z,我有10分钟窗口内的flink代码(键控,tumplingwindow) 我有条件开火(在10分钟的窗口内) a&b&c a&z b&x&y a&e a&f 很明显,在10分钟窗口内,只有前三个条件将评估为真 我希望这三个触发器中的每一个都为这些事件向kafka接收器发出一个触发器(因此本例中有三(3)个触发器发送到kafka接收器) 我检查了这些示例,并对kafka producer、consumer和Flink pr

因此,我们在kafka源代码中有10分钟窗口内的事件a、b、c、x、y、z,我有10分钟窗口内的flink代码(键控,tumplingwindow)

我有条件开火(在10分钟的窗口内)

  • a&b&c
  • a&z
  • b&x&y
  • a&e
  • a&f
  • 很明显,在10分钟窗口内,只有前三个条件将评估为真

    我希望这三个触发器中的每一个都为这些事件向kafka接收器发出一个触发器(因此本例中有三(3)个触发器发送到kafka接收器)

    我检查了这些示例,并对kafka producer、consumer和Flink processor进行了全面测试。但从任何一个例子都不清楚如何在同一时间窗口内对数据评估多个独立条件

    这只是一个概念性的例子。实际上,将有200000-400000个条件根据传入流(数百万个事件)进行评估。有人提到,通常情况下,您会使用drools(或规则引擎)之类的东西,但在这种特定情况下,RETE根本不会扩展,建议我查看一个复杂的事件流处理器,它更适合于大数据


    抱歉,这已经是一个很长的问题了,但我想给出一个好的背景,让flink专家更好地判断。谢谢。

    只是澄清一下,所以卡夫卡来源的数据来自不同的账户,每个账户可能有10-20个条件。在给定的时刻,只有属于时间窗口中事件的帐户的条件才会被实际评估——不是所有400000个条件。总的来说,如果将每个帐户的帐户数和条件数考虑在内,您将得到300000-400000个条件。该示例假设所有事件都来自同一个帐户,并且所有条件都来自该帐户。实际上,Flink now不支持cep处理的多个规则,这可能不是您的最佳选择。我会选择一个有状态的操作符来帮助实现这一点。首先,将所有规则加载到内存中,然后在接收到每个元素时更新匹配状态,如果满足条件,则输出一个触发器标志,最后使用触发器根据触发器标志进行评估。您好,谢谢。我发现了这篇文章,您可能会发现它很有用:。这似乎很有可能。我想得不对。他们的方法利用了flink的流式设计和一系列步骤——将规则设置为“控制”流,然后根据符合事件条件的规则将两者连接起来。然后是预过滤和计数处理器。计数处理器确定您是否有一组事件/规则的警报。只是澄清一下,因此卡夫卡源中的数据来自不同的帐户,每个帐户可能有10-20个条件。在给定的时刻,只有属于时间窗口中事件的帐户的条件才会被实际评估——不是所有400000个条件。总的来说,如果将每个帐户的帐户数和条件数考虑在内,您将得到300000-400000个条件。该示例假设所有事件都来自同一个帐户,并且所有条件都来自该帐户。实际上,Flink now不支持cep处理的多个规则,这可能不是您的最佳选择。我会选择一个有状态的操作符来帮助实现这一点。首先,将所有规则加载到内存中,然后在接收到每个元素时更新匹配状态,如果满足条件,则输出一个触发器标志,最后使用触发器根据触发器标志进行评估。您好,谢谢。我发现了这篇文章,您可能会发现它很有用:。这似乎很有可能。我想得不对。他们的方法利用了flink的流式设计和一系列步骤——将规则设置为“控制”流,然后根据符合事件条件的规则将两者连接起来。然后是预过滤和计数处理器。计数处理器确定您是否有一组事件/规则的警报。