说明
创建PatternStream之后,从检测到的事件序列中提取事件,可通过下面方法:
- select()
- flatSelect()
- process()
process()
自 1.8 版本之后,对于匹配事件的通用检测处理方式,传入 PatternProcessFunction 对象,该对象可以访问上下文(Context),进行更多的操作。
例子
SingleOutputStreamOperator<String> soso = patternStream
.process(new PatternProcessFunction<IN, OUT>() {
@Override
public void processMatch(Map<String, List<IN>> match, Context ctx, Collector<OUT> out) throws Exception {
}
});
PatternProcessFunction 中必须实现 processMatch() 方法
参数:
match:匹配复杂事件的数据,放在
Map中,- map 中的
key是.begin( name )或.next( name )中的name - map 中的
value是 匹配的数据
- map 中的
ctx:上下文。利用这个上下文可以获取当前的时间信息,比如事件的时间戳(timestamp)或者处理时间(processing time);还可以调用.output()方法将数据输出到侧输出流。在 CEP 中,侧输出流一般被用来处理超时事件
out:通过该对象收集数据,传给下游
参考:
https://blog.csdn.net/mengxianglong123/article/details/124123750
https://cloud.tencent.com/developer/article/1683066