在EventTime流环境中绕过Flink CEP缓冲区

时间:2018-12-10 21:13:19

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

我有一个EventTime流应用程序,该应用程序将CEP库用于加入的流上的基本三步模式。加入的流是实时数据,水印数据和窗口数据以及窗口/水印之外的历史项流的组合。

设置与dataArtisans blog post相似,但最后一步是CEP模式。

我们的CEP设置如下所示,并且在添加未加时间戳的历史流之前可以正常工作。 EscalatingAlertEventIterativeCondition确保上一个事件的匹配级别高于下一个事件的匹配级别。

Pattern<AlertEvent, ?> pattern = Pattern.<AlertEvent>
        begin("one")
        .where((AlertEvent event) -> event.level > 0)
        .next("two")
        .where(new EscalatingAlertEventIterativeCondition("one"))
        .next("three")
        .where(new EscalatingAlertEventIterativeCondition("two"));

return CEP.pattern(
        alertEventStream,
        pattern
);

我看到的问题是CEP永远在缓冲(过滤器内的断点和迭代条件现在没有出现),并且过滤/选择从未发生。我最初以为这可能是由于CEP缓冲区引起的,但是不确定,因为我对Flink和Flink CEP都是陌生的。有什么办法可以避免延迟缓冲,或者其他东西看起来不对?

我们的工作图,其中只有最重要的实时数据带有时间戳并带有水印: enter image description here

0 个答案:

没有答案