排序是在 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);
这只影响二次排序;主要排序始终按时间戳进行。