(1)Flink|(1)Flink CEP复杂事件处理引擎介绍
(1)简介及应用场景:复杂事件处理(CEP)既是把不同的数据看做不同的事件,并且通过分析事件之间的关系建立起一套事件关系序列库。利用过滤,聚合,关联性,依赖,层次等技术,最终实现由简单关系产生高级事件关系。复杂事件主要应用场景:主要用于信用卡欺诈检测、用户风险检测、设备故障检测、攻击行为分析等领域。Flink CEP能够利用的场景较多,在实际业务场景中也有了广泛的使用案例与经验积累。比如
文章图片
在可编程方面,Flink同时推出了Flink SQL CEP,开发者可以通过较为属性的SQL语法快速构建各类CEP事件组合应用。Flink CEP原理说明:
文章图片
(2)Flink CEP匹配模式介绍:在Flink CEP中匹配模式分为严格近邻模式和宽松近邻模式。严格近邻模式的事件必须是紧密连接的,宽松近邻事件可以无需紧密连接,如下图:
文章图片
文章图片
(3)Flink CEP SQL语法介绍:(3.1)Flink CEP SQL样例:
String sql = "SELECT * " +
"FROM CEP_SQL_3 " +
"MATCH_RECOGNIZE ( " +
"PARTITION BY symbol " +//分组
"ORDER BY rowtime " +//排序
"MEASURES " +//定义如何根据匹配成功的输入事件构造输出事件
"LISTAGG(CAST(e3.id as varchar),',') as ids,"+
"AVG(e1.price) as avgPrice,"+
//"START_ROW.rowtime AS start_tstamp, " +
"LAST(e1.rowtime) AS bottom_tstamp, " +//第一次的事件时间为end_timestamp
"LAST(e3.rowtime) AS end_tstamp " +//最新的事件时间为end_timestamp
"ONE ROW PER MATCH " +//匹配成功输出一条
"AFTER MATCHSKIP PAST LAST ROW " +//匹配后跳转到下一行
"PATTERN ( e1 e2 e3{1}) WITHIN INTERVAL '2' MINUTE" +//定义事件组
"DEFINE " +//定义每个事件的匹配条件
"e1 AS " +
"e1.price = 25 , " +
"e2 AS " +
"e2.price = 18 ," +
"e3 AS " +
"e3.price = 15 " +
") MR";
(3.2)Flink CEP匹配规则:贪婪词量和勉强词量
Concatenation-像(AB)这样的模式意味着A和B之间的连接是严格的。因此,在它们之间不能存在没有映射到A或B的行。Quantifiers-修改可以映射到模式变量的行数。* 0或者多行+ 1或者多行? 0或者1行{n} 严格n行(n>0){n,} n或者更多行(n≥O){n,m} 在n到m(包含)行之间(0≤n≤m,0
{,m}一在0到m(包含)行之间(m>0)
文章图片
(3.3)匹配策略
【(1)Flink|(1)Flink CEP复杂事件处理引擎介绍】SKIP PAST LAST ROW -匹配成功之后,从匹配成功的事件序列中的最后?个事件的下?个事件开始进?下?次匹配。
SKIP TO NEXT ROW -匹配成功之后,从匹配成功的事件序列中的第?个事件的下?个事件开始进?下?次匹配。(默认模式)
SKIP TO LAST variable -匹配成功之后,从匹配成功的事件序列中最后?个对应于变量的事件开始进行下?次匹 配。
SKIP TO FIRST variable -匹配成功之后,从匹配成功的事件序列中第?个对应于变量的事件开始进行下?次匹配。
推荐阅读
- 在Vue|在Vue 3中使用v-model来构建复杂的表单
- kubernetes|k8s中清除已安装的rook-ceph集群
- jquery|jquery ajax给java发送复杂数据的格式相关问题
- Flink|Flink on Yarn 部署Session-Cluster和Per-Job-Cluster
- flink on yarn Per-job模式High Availability 配置
- 拓端tecdat|拓端tecdat|R语言复杂网络分析(聚类(社区检测)和可视化)
- 数据结构与算法|『数据结构与算法』之时间复杂度与空间复杂度,看这一篇就够啦
- 重构指标之如何监控代码圈复杂度
- 直播回放含 PPT 下载|基于 Flink & DeepRec 构建 Online Deep Learning
- Java中NoClassDefFoundError|Java中NoClassDefFoundError 和 ClassNotFoundException的区别