flink1.12.x FlinkCEP-处理匹配事件:select()、flatSelect()、process()

说明

创建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 是 匹配的数据
  • ctx:上下文。利用这个上下文可以获取当前的时间信息,比如事件的时间戳(timestamp)或者处理时间(processing time);还可以调用.output()方法将数据输出到侧输出流。在 CEP 中,侧输出流一般被用来处理超时事件

  • out:通过该对象收集数据,传给下游

参考:
https://blog.csdn.net/mengxianglong123/article/details/124123750
https://cloud.tencent.com/developer/article/1683066


原文出处:/show_1IX4GGtEj6WF.html