Flink CEP 如何对事件进行排序

问题描述 投票:0回答:1

this问题中写道:“CEP 总是按时间戳对其输入进行排序”。

你能告诉我排序在 cep 库代码中的具体位置吗?

有什么方法可以控制这种排序,禁用它,放大窗口等

apache-flink flink-cep
1个回答
0
投票

排序是在 CEP 运算符中完成的,并且仅在事件时间模式下操作时完成。它依靠水印来了解事件何时可以安全地从运算符的初始排序阶段释放到模式匹配阶段。

后期事件不用于模式匹配,但如果您使用 DataStream API,则可以将其发送到侧面输出。有关详细信息,请参阅文档

要禁用此排序,使用 Flink SQL,您可以将处理时间时间属性与 match_recognize 结合使用。使用 DataStream API,通过

inProcessingTime
上的
PatternStream
方法使用处理时间,例如:

CEP.pattern(input, pattern)
    .inProcessingTime()

要自定义排序,请使用

EventComparator
(docs):

DataStream<Event> input = ...;
Pattern<Event, ?> pattern = ...;
EventComparator<Event> comparator = ...; // optional

PatternStream<Event> patternStream = CEP.pattern(input, pattern, comparator);

这只影响二次排序;主要排序始终按时间戳进行。

© www.soinside.com 2019 - 2024. All rights reserved.