Flink——复杂事件(CEP)

本文介绍了Flink的复杂事件处理库CEP,详细阐述了模式概念、分类及使用,包括单个模式、组合模式和模式组。讨论了Flink CEP的处理流程、时间处理,以及如何在实际案例中应用,如订单超时监控和连续登录失败检测。
摘要由CSDN通过智能技术生成

1、概念

  • Flink CEP(Complex Event Processing)是在Flink上层实现的复杂事件处理库
  • 将数据流通过一定的规则匹配,然后输出用户想得到的数据,
    -底层通过equals()和hashCode()方法来比较和匹配事件

2、使用场景

风控检测
对用户异常行为模式、数据异常流向实时检测
策略营销
向特定行为的用户进行实时的精准营销
运维监控
监控设备运行参数,灵活配置多指标的发生规则

2、模式(Pattern)

模式的概念
处理事件的规则,被叫做“模式”(Pattern)
模式的使用

val input: DataStream[Event] = ...
// 1.定义一个Pattern
val pattern = Pattern.begin[Event]("start").where(_.getId == 4).next("middle").subtype(classOf[SubEvent])...
// 2.将事件流与Pattern进行匹配
val patternStream = CEP.pattern(input, pattern)
// 3.得到处理结果
val result: DataStream[Alert] = patternStream.process(...)

2、模式的分类

单个模式(Individual Patterns)

单个模式的分类
单例(singleton)模式
循环(looping)模式
可以在单个模式后追加量词,指定循环次数
量词
pattern.oneOrMore()一次或多次
pattern.times(#ofTimes)固定次数
pattern.times(#fromTimes, #toTimes)范围次数
pattern.greedy()贪心
pattern.optional()可选
量词的使用

// 期望出现 4 次 
start.times(4) 
// 期望出现 0 或者 4 次 
start.times(4).optional() 
// 期望出现 2、3 或者 4 次 
start.times(2, 4) 
// 期望出现 2、3 或者 4 次,并且尽可能的重复次数多 
start.times(2, 4).greedy() 
// 期望出现 0、2、3 或者 4 次 
start.times(2, 4).optional()
// 期望出现 0、2、3 或者 4 次,并且尽可能的重复次数多
start.times(2, 4).optional().greedy() 
// 期望出现 1 到多次 
start.oneOrMore() 
// 期望出现 1 到多次,并且尽可能的重复次数多 
start.oneOrMore().greedy() 
// 期望出现 0 到多次 
start.oneOrMore().optional() 
// 期望出现 0 到多次,并且尽可能的重复次数多 
start.oneOrMore().optional().greedy() 
// 期望出现 2 到多次 
start.timesOrMore(2) 
// 期望出现 2 到多次,并且尽可能的重复次数多 
start.timesOrMore(2).greedy() 
// 期望出现 0、2 或多次 
start.timesOrMore(2).optional() 
// 期望出现 0、2 或多次,并且尽可能的重复次数多 
start.timesOrMore(2).optional().greedy()

条件
每个模式都需要指定触发条件,作为模式是否接受事件进入的判断依据
通过调用 .where() .or() 和 .until() 来指定条件
条件的分类
简单条件(Simple Condition)

  • 通过 .where() 方法对事件中的字段进行判断筛选
  • 通过pattern.subtype(subClass)方法限制接受的子类型

组合条件(Combining Condition)

  • or() 方法表示或逻辑相连,where 的直接组合就是AND

终止条件(Stop Condition)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值