《Flink学习笔记》——第十二章 Flink CEP

本文为博客 VIP 文章,开通 VIP 后可阅读全文

开通 VIP

12.1 基本概念

12.1.1 CEP是什么

1.什么是CEP?

答:所谓 CEP,其实就是“复杂事件处理(Complex Event Processing)”的缩写;而 Flink CEP,就是 Flink 实现的一个用于复杂事件处理的库(library)。

2.那到底什么是“复杂事件处理”呢?

答:就是可以在事件流里,检测到特定的事件组合并进行处理,比如说“连续登录失败”,或者“订单支付超时”等等。具体的处理过程是,把事件流中的一个个简单事件,通过一定的规则匹配组合起来,这就是“复杂事件”;然后基于这些满足规则的一组组复杂事件进行转换处理,得到想要的结果进行输出。

3.CEP的目的是什么?

答:就是在无界流中检测出特定的数据组合,让我们有机会掌握数据中重要的高阶特征

CEP的流程可以分成三个步骤:

(1)定义一个匹配规则

(2)将匹配规则应用到事件流上,检测满足规则的复杂事件

(3)对检测到的复杂事件进行处理,得到结果进行输出

示例:

​ 输入是不同形状的事件流,我们可以定义一个匹配规则:在圆形后面紧跟着三角形。那么将这个规则应用到输入流上,就可以检测到三组匹配的复杂事件。它们构成了一个新的“复杂事件流”,流中的数据就变成了一组一组的复杂事件,每个数据都包含了一个圆形和一个三角形。接下来,我们就可以针对检测到的复杂事件,处理之后输出一个提示或报警信息了。

image-20230408182527254

12.1.2 模式(Pattern)

CEP定义的匹配规则,我们把它叫做模式。

模式的定义主要有两部分:

  • 每个简单事件的特征
  • 简单事件之间的组合关系

当然,我们也可以进一步扩展模式的功能。比如,匹配检测的时间限制;每个简单事件是否可以重复出现;对于事件可重复出现的模式,遇到一个匹配后是否跳过后面的匹配;等等。

所谓“事件之间的组合关系”,一般就是定义“谁后面接着是谁”,也就是事件发生的顺序。我们把它叫作“近邻关系”。可以定义严格的近邻关系,也就是两个事件之前不能有任何其他事件;也可以定义宽松的近邻关系,即只要前后顺序正确即可,中间可以有其他事件。另外, 还可以反向定义,也就是“谁后面不能跟着谁”。

CEP 做的事其实就是在流上进行模式匹配。根据模式的近邻关系条件不同,可以检测连续的事件或不连续但先后发生的事件;模式还可能有时间的限制,如果在设定时间范围内没有满足匹配条件,就会导致模式匹配超时(timeout)。

12.1.3 应用场景

CEP主要用于实时流数据的分析处理

  • 风险控制

    设定一些行为模式,可以对用户的异常行为实时检测

  • 用户画像

    精准营销,如客户买了什么那大概率还会买什么,和精准推荐相似

  • 运维监控

    对于企业服务的运维管理,可以利用 CEP 灵活配置多指标、多依赖来实现更复杂的监控模式。

12.2 快速上手

12.2.1 引入依赖
<dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-cep</artifactId>
    <version>${flink.version}</version>
</dependency>
12.2.2 一个简单实例

需求:检测用户行为,如果连续三次登录失败,就输出报警信息。很显然,这是一个复杂事件的检测处理,我们可以使用 Flink CEP 来实现

定义一个登录事件POJO类

@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class LoginEvent {
   
   
    private String userId;
    private String ipAddress;
    private String eventType;
    private Long timestamp;
}

主函数

public class LoginFailDetect {
   
   
    public static void main(String[] args) throws Exception {
   
   
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        env.setParallelism(1);

        KeyedStream<LoginEvent, String> keyedStream = env.fromElements(
                new LoginEvent("user_1", "192.168.0.1", "fail", 2000L),
                new LoginEvent("user_1", "192.168.0.2", "fail", 3000L),
                new LoginEvent("user_2", "192.168.1.29", "fail", 4000L),
                new LoginEvent("user_1", "171.56.23.10", "fail", 5000L),
                new LoginEvent("user_2", "192.168.1.29", "success", 6000L),
                new LoginEvent("user_2", "192.168.1.29", "fail", 7000L),
                new LoginEvent("user_2", "192.168.1.29", "fail", 8000L)
        ).assignTimestampsAndWatermarks(WatermarkStrategy.<LoginEvent>forMonotonousTimestamps().withTimestampAssigner(
                (SerializableTimestampAssigner<LoginEvent>) (loginEvent, l) -> loginEvent.getTimestamp
FlinkCEP(复杂事件处理) CEP概述 复杂事件处理(Complex Event Processing,CEP) FLink CEP是在Flink中实现的复杂事件处理(CEP)库 CEP允许在无休止的事件流中检测事件模式,让我们有机会掌握数据中重要的部分 一个或多个由简单事件构成的事件流通过一定的规则匹配,然后输出用户想要得到的数据-=-满足规则的复杂事件 ... 阅读详情

相关推荐

Flink——复杂事件(CEP)

1、概念 Flink CEP(Complex Event Processing)是在Flink上层实现的复杂事件处理库 将数据流通过一定的规则匹配,然后输出用户想得到的数据, -底层通过equals()和hashCode()方法来比较和匹配事件 2、使用场景 风控检测 对用户异常行为模式、数据异常流向实时检测 策略营销 向特定行为的用户进行实时的精准营销 运维监控 监控设备运行参数,灵活配置多指标的发生规则 2、模式(Pattern) 模式的概念 处理事件的规则,被叫做“模式”(Pattern) 模式的

h1231233211的博客 1224

flink-cep详细解读

CEP = Complex Event Processing 复杂事件处理。专门用来识别数据流中一组有顺序、有时间限制的事件组合,自定义匹配规则,抓取异常、风险、特定业务行为。

m0_74640785的博客 226

Flink cep动态模板+cep规则动态修改实践

Flink CEP 概念以及使用场景 1.什么是CEPCEP的意思是复杂事件处理,例如:起床-->洗漱-->吃饭-->上班等一系列串联起来的事件流形成的模式称为 CEP。如果发现某一次起床后没有刷牙洗脸亦或是吃饭就直接上班,就可以把这种非正常的事件流匹配出来进行分析,看看今天是不是起晚了。 在真实场景中,起床,洗漱,吃饭,上班就是一个个事件数据。 CEP的特征如下: 目标:从有序的简单事件流中发现一些高阶特征; 输入:一个或多个简单事件构成...

qq_31866793的博客 1万+

flink入门-09-Flink CEP简介

1、 什么是 CEP ? • 复杂事件处理(Complex Event Processing,CEP) • Flink CEP是在 Flink 中实现的复杂事件处理(CEP)库 • CEP 允许在无休止的事件流中检测事件模式,让我们有机会掌握数据中重要的部分 • 一个或多个由简单事件构成的事件流通过一定的规则匹配,然后输出用户想得到的数据 — 满足规则的复杂事件 2、CEP 的特点 • 目标:从有序的简单事件流中发现一些高阶特征 • 输入:一个或多个由简单事件构成的事.

q287573145的博客 7443

Flink CEP

一、基本概念 1. CEP 是什么   所谓CEP,其实就是“复杂事件处理(Complex Event Processing)”的缩写;而 Flink CEP,就是 Flink 实现的一个用于复杂事件处理的库(library)。   那到底什么是“复杂事件处理”呢?就是可以在事件流里,检测到特定的事件组合并进行处理,比如说“连续登录失败”,或者“订单支付超时”等等。   具体的处理过程是,把事件流中的一个个简单事件,通过一定的规则匹配组合起来,这就是“复杂事件”;然后基于这些满足规则的一组组复杂事件进行转换

mengxianglong123的博客 5526

Flink CEP详解

1 概念 (1)定义       复合事件处理(Complex Event Processing,CEP)是一种基于动态环境中事件流的分析技术,事件在这里通常是有意义的状态变化,通过分析事件间的关系,利用过滤、关联、聚合等技术,根据事件间的时序关系和聚合关系制定检测规则,持续地从事件流中查询出符合要求的事件序列,最终分析得到更复杂的复合事件。 (2)特征       CEP的特征如下: &

huahuaxiaoshao的博客 1万+

Flink动态CEP快速入门

实时计算Flink版支持通过DataStream作业的方式运行支持规则动态更新的Flink CEP作业。本文结合实时营销中的反作弊场景,为您介绍如何基于Flink全托管快速构建一个动态加载最新规则来处理上游Kafka数据的Flink CEP作业。

soso1968的博客 1971

[实时计算flink]动态CEP中规则的JSON格式定义

对于一个事件序列(Event Sequence)中的模式(Pattern),我们可以将其看作一个图(Graph),图中节点(Node)为针对某些事件(Event)的模式,节点之间的边(Edge)为事件选择策略(Event Selection Strategy),即如何从一类模式的匹配转移到另一类模式的匹配。每个图也可以看作一个更大的图的子节点,从而允许模式的嵌套。基于以上考虑,阿里云实时计算Flink定义了一套基于JSON的规范来描述CEP中的规则,进而方便规则的存储与修改,该规范中各个字段的含义如下。

soso1968的博客 2589

Flink CEP结合案例详解

1、介绍 FlinkCEP是在Flink之上实现的复杂事件处理(CEP)库。它允许您在无穷无尽的事件流中检测事件模式,使您有机会掌握数据中重要的内容。通常会用来做一些用户操作APP的日志风控策略等多种复杂事件,下面详细以用户连续10s内登陆失败超过3次告警为需求,进行全面讲解。 1.1、整体需求数据详解图 ...

一个数据小开发的博客 3287

Flink: CEP详解

本文根据 Apache Flink 系列直播课程整理而成,由哈啰出行大数据实时平台资深开发刘博分享。通过一些简单的实际例子,从概念原理,到如何使用,再到功能的扩展,希望能够给计划使用或者已经使用的同学一些帮助。 主要的内容分为如下三个部分: Flink CEP 概念以及使用场景。 如何使用 Flink CEP。 如何扩展 Flink CEPFlink CEP 概念以及使用场景 1.什么是 CEP CEP 的意思是复杂事件处理,例如:起床–>洗漱–>吃饭–>上班等一系列串

xinji 5533

深入浅出Flink CEP丨如何通过Flink SQL作业动态更新Flink CEP作业

如果以 JSON 表示规则,则填写 JSON。当上游算子的数据发送到DynamicCepOperator时,同一条数据会被多个 NFA 处理,当某一个NFA match到数据之后,会将数据发送给对应的PatternProcessFunction处理,被PatternProcessFunction处理完的数据则会被发送给下游算子。Flink CEPCEP 在 Apache Flink 中的具体实现,是 Apache Flink 的一个库,使用户可以在 Flink 的流处理引擎上进行复杂事件的处理。

a958014226的博客 1367

flink cep

本文详细的介绍了flink cep的概念与基础用法;

IT云清 5614

Flink之复杂事件处理CEP

FlinkCEP是在Flink之上实现的复杂事件处理(CEP)库。它允许我们检测无穷无尽的事件流中的事件模式,让我们有机会掌握数据中的重要内容。

积跬步,至千里。 1575

Flink-CEP 实战教程

  所谓CEP,其实就是“”的缩写;而 Flink CEP,就是 Flink 实现的一个用于复杂事件处理的库(library)。   那到底什么是“复杂事件处理”呢?就是可以在事件流里,检测到特定的事件组合并进行处理,比如说“连续登录失败”,或者“订单支付超时”等等。   具体的处理过程是,把事件流中的一个个简单事件,通过一定的规则匹配组合起来,这就是“复杂事件”;然后基于这些满足规则的一组组复杂事件进行转换处理,得到想要的结果进行输出。  如图所示,输入是不同形状的事件流,我们可以定义一个匹配规则:在圆形

moments的博客 1729

Flink-复杂事件(CEP

什么是复杂事件CEP? 一个或多个由简单事件构成的事件流通过一定的规则匹配,然后输出用户想得到的数据,满足规则的复杂事件。 特征: 目标:从有序的简单事件流中发现一些高阶特征 输入:一个或多个由简单事件构成的事件流 处理:识别简单事件之间的内在联系,多个符合一定规则的简单事件构成复杂事件 输出:满足规则的复杂事件 CEP架构 CEP-NFA CEP-NFA是什么? Flink 的每个模式包含多个状态,模式匹配的过程就是状态转换的过程,每

woliuqiangdong的博客 974

Flink CEP是什么?

CEP 是一种从连续的数据流中识别出符合预设模式(Pattern)的事件组合的技术。用户行为分析(如“登录 → 加入购物车 → 放弃支付”)异常检测(如“连续失败请求超过3次”)风控规则匹配(如“短时间内多次转账”)特性描述名称Flink CEP功能流式数据中识别事件模式输入无界流输出匹配到的事件组合适用场景用户行为分析、风控、安全审计等依赖库flink-cep或。

╮(╯_╰)╭ Don't expect me to reply to you in time 862

Flink深入浅出之05:CEP复杂事件

定义 Pattern 可以是单次执行模式,也可以是循环执行模式。单次执行模式一次只接受 一个事件,循环执行模式可以接收一个或者多个事件。通常情况下,可以通过指定循环次数将单次执行模式变为循环执行模式。每种模式能够将多个条件组合应用到同一事件之上,条件组合可以通过 where 方法进行叠加。每个 Pattern 都是通过 begin 方法定义的。

我的博客 1608

深入探索Flink的复杂事件处理CEP

CEP是一种基于流处理的技术,它将系统产生的数据看作是不同类型的事件。通过深入分析这些事件之间的内在关系,构建起多样化的事件关系序列库。在此基础上,运用过滤、关联、聚合等先进技术手段,能够从简单的基础事件中衍生出高级事件。并且,借助模式规则,我们可以精准地对重要信息进行跟踪和深度分析,从而在实时数据的海洋中发掘出隐藏的、具有高价值的信息宝藏。CEP在多个领域展现出了强大的应用潜力,例如在防范网络欺诈方面,能够实时监测异常的交易行为模式;

qq_68076599的博客 1627
上一篇: 《Flink学习笔记》——第十一章 Flink Table API和 Flink SQL
ZLin.Tang
博客等级 码龄13年 10粉丝 30原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值