FlinkCEP:我可以参考更早的事件来定义后续匹配吗?

Posted

技术标签:

【中文标题】FlinkCEP:我可以参考更早的事件来定义后续匹配吗?【英文标题】:FlinkCEP: Can I reference an earlier event to define a subsequent match? 【发布时间】:2019-03-23 00:09:54 【问题描述】:

这是一个简单的例子:

val pattern = 
   Pattern.begin[Event]("start").where(_.getId == 42).
   next("middle").subtype(classOf[SubEvent]).where(x => x.getVolume == **first event matched**.getVolume) ...

本质上,第二个事件(“中间”)需要访问第一个事件(“开始”)的状态。是否可以在不需要外部状态的情况下在 FlinkCEP 中执行此操作?

【问题讨论】:

【参考方案1】:

当然。您可以借助 Context 获取特定模式的事件。

new IterativeCondition<Event>() 
            private static final long serialVersionUID = 8061969839441121955L;

            @Override
            public boolean filter(Event value, IterativeCondition.Context<Event> ctx) throws Exception 
                double sum = 0.0;
                for (Event e : ctx.getEventsForPattern("middle")) 
                    sum += e.getPrice();
                
                return sum > 5.0;
            
        

【讨论】:

以上是关于FlinkCEP:我可以参考更早的事件来定义后续匹配吗?的主要内容,如果未能解决你的问题,请参考以下文章

检测某个事件的缺失

今天和更早的日期之间的SQL

FlinkCEP - Flink的复杂事件处理

08001 - SQL Server Native Client 11.0 不支持连接到SQL Server 2000或更早的版本。

(警告)Ubuntu-Server 重叠和更早的别名 [关闭]

Xcode 中的 iOS 9 警告 - 此文件设置为为比项目部署更早的版本构建。功能可能受到限制