(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 MATCH SKIP 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)< div=””>
{,m} 一在 0 到 m(蕴含)行之间(m>0)
(3.3)匹配策略
SKIP PAST LAST ROW - 匹配胜利之后,从匹配胜利的事件序列中的最初⼀个事件的下⼀个事件开始进⾏下⼀次匹配。
SKIP TO NEXT ROW - 匹配胜利之后,从匹配胜利的事件序列中的第⼀个事件的下⼀个事件开始进⾏下⼀次匹配。(默认模式)
SKIP TO LAST variable - 匹配胜利之后,从匹配胜利的事件序列中最初⼀个对应于变量的事件开始进行下⼀次匹 配。
SKIP TO FIRST variable - 匹配胜利之后,从匹配胜利的事件序列中第⼀个对应于变量的事件开始进行下⼀次匹配。