当前位置: 首页 > 后端技术 > Java

(一)FlinkCEP复杂事件处理引擎介绍

时间:2023-04-02 00:01:06 Java

(一)简介及应用场景:复杂事件处理(CEP)将不同的数据看作不同的事件,通过分析事件之间的关系建立一组事件事件序列图书馆。使用过滤、聚合、关联、依赖和层次结构等技术,最终可以从简单的关系生成高级事件关系。复杂事件主要应用场景:主要应用于信用卡欺诈检测、用户风险检测、设备故障检测、攻击行为分析等领域。FlinkCEP可以在很多场景下使用,在实际业务场景中有着广泛的用例和经验积累。比如在编程方面,Flink同时推出了FlinkSQLCEP,开发者可以通过更多属性的SQL语法快速构建各种CEP事件组合应用。FlinkCEP原理说明:(2)FlinkCEP匹配模式介绍:在FlinkCEP中,匹配模式分为严格邻居模式和松散邻居模式。严格邻居模式的事件必须紧密连接,松散邻居事件不需要紧密连接,如下图所示:(3)FlinkCEPSQL语法介绍:(3.1)FlinkCEPSQL示例:Stringsql="SELECT*"+"FROMCEP_SQL_3"+"MATCH_RECOGNIZE("+"PARTITIONBYsymbol"+//分组"ORDERBYrowtime"+//排序"MEASURES"+//定义如何根据成功匹配的输入事件构造输出事件"LISTAGG(CAST(e3.idasvarchar),',')asids,"+"AVG(e1.price)asavgPrice,"+//"START_ROW.rowtimeASstart_tstamp,"+"LAST(e1.rowtime)ASbottom_tstamp,"+//第一个事件时间为end_timestamp"LAST(e3.rowtime)ASend_tstamp"+//最晚事件时间为end_timestamp"ONEROWPERMATCH"+//输出匹配成功"AFTERMATCHSKIPPASTLASTROW"+//匹配后跳转到下一行"PATTERN(e1e2e3{1})WITHININTERVAL'2'MINUTE"+//定义事件组"DEFINE"+//定义每个事件的匹配条件"e1AS"+"e1.price=25,"+"e2AS"+"e2.price=18,"+"e3AS"+"e3.price=15"+")先生";(3.2)FlinkCEP匹配规则:greedywordsize和reluctantwordsizeConcatenation-像(AB)这样的模式意味着A和B之间的连接是严格的,因此,它们之间不存在映射到A或B的行。量词-修改可以映射到模式变量的行数。*0或更多行+1或更多行?0or1line{n}Strictlynlines(n>0){n,}normorelines(n≥O){n,m}n到m(含)行之间(0≤n≤m,0{,m}—0到m(含)行之间(m>0)(3.3)匹配策略SKIPPASTLASTROW-匹配成功后,从匹配成功的事件开始在序列中的最后一个事件之后开始下一场比赛。SKIPTONEXTROW-成功匹配后,从成功事件序列中第一个事件的下一个事件开始下一场匹配。(默认模式)SKIPTOLASTvariable-成功匹配后,从成功事件序列中变量对应的最后一个事件开始下一次匹配。SKIPTOFIRSTvariable-成功匹配后,下一场匹配将从与成功事件序列中的变量对应的第一个事件开始。