Flink CEP

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

Flink CEP

相关博客:

Flink-复杂事件(CEP)

Flink之CEP(复杂时间处理)

一、基本概念

1.1 什么是CEP

复杂事件处理(Complex Event Processing,简称CEP)

Flink CEP是Flink中实现的复杂事件处理(CEP)库。

CEP允许在无休止的事件流中检测事件模式,让我们有机会掌握数据中重要的部分。

一个或多个由简单事件构成的事件通过一定的规则匹配,然后输出用户想要得到的数据——满足规则的复杂事件。

1.2 CEP的特点

在这里插入图片描述

目标:从有序的简单事件流中发现一些高阶特征。

输入:一个或多个由简单事件构成的事件流。

处理:识别简单事件之间的内在联系,多个符合一定规则的简单事件构成复杂事件。

输出:满足规则的复杂事件。

二、Pattern API

处理事件的规则,被叫做“模式”(Pattern)。

Flink CEP提供了Pattern API,用于对输入流数据进行复杂事件规则定义,用来提取符合规则的时间序列

使用CEP的基本流程如下:

// 数据流
DataStream<Event> input = ...

// 1.定义一个Pattern
Pattern<Event, Event> pattern = Pattern.<Event>begin("start").where(...)
  .next("middle").subtype(SubEvent.class).where(...)
  .followedBy("end").where(...);

// 2.将创建好的Pattern应用到输入事件流上
PatternStream<Event> patternStream = CEP.pattern(input,pattern);

// 3.检出匹配事件序列,处理得到结果
DataStream<Alert> result = patternStream.select(...);

2.1 个体模式(Individual Patterns)

组成复杂规则的每一个单独的模式定义,就是“个体模式”

个体模式可以包括“单例(singleton)模式”和“循环(looping)模式”。

单例模式只接受一个事件,而循环模式可以接收多个。

下面介绍一下常用的API:

量词(Quantifier)

可以在一个个个体模式后追加上两次,也就是指定循环次数。

// 匹配出现4次
start.times(4)

// 匹配出现2/3/4次
// greedy 贪婪的,尽可能多的匹配
start.times(2,4).greedy

// 匹配出现0次或者4次
start.times(4).optional

// 匹配出现1次或者多次
start.oneOrMore

// 匹配出现2,3,4次
start.times(2,4)

// 匹配出现0次、2次或者更多次,并且尽可能多的重复匹配
start.timesOrMore(2).optional.greedy

条件(Condition)

每个模式都需要指定触发条件,作为模式是否接受事件进入的判断依据。

CEP中的个体模式主要通过where(),or()和until()来指定条件。

按照不同的调用方式,可以分成以下几类

  • 简单条件

    通过where()方法对事件中的字段进行判断筛选,决定是否接受该事件。

    // 判断该事件是否以foo开头
    start.where(new SimpleCondition<Event>){
      @Override
      public boolean filter(Event value) throws Exception{
        return value.getName.startsWith("foo");
      }
    }
    
  • 组合条件

    将简单条件进行合并,or()方法表示逻辑或相连,where的直接组合就是and()

    pattern
    	.where(event => ... /* some condition */)
    	.or(event => ... /* or condition */)
    
  • 终止条件

    如果使用了oneOrMore或者oneOrMore.optinal,建议使用until()作为终止条件,一遍清理状态。

  • 迭代条件

    能够对模式之前所有接收的事件进行处理。

    可以调用ctx.getEventsForPattern("name")

    .where(new IterativeCondition<Event>(){...})
    

2.2 组合模式

组合模式(Combining Patterns)也叫做模式序列

将很多个体模式组合起来,就形成了整个的模式序列。

模式序列必须从一个“初始模式”开始,如下:

Pattern<Event, Event> start = Pattern.<Event>begin("start")

在这里插入图片描述

个体模式之间连接有多个选择:

  • 严格近邻

    • 所有事件按照严格的顺序出现,中间没有任何不匹配的事件,由next()指定
    • 例如:对于模式"a next b",事件序列[a,c,b1,b2]没有匹配
  • 宽松近邻

    • 允许中间出现不匹配的事件,由followedBy()指定
    • 例如:对于模式"a followedBy b",事件序列[a,c,b1,b2]匹配为[a,b1]
  • 非确定性宽松近邻

    • 进一步放宽条件,之前已经匹配过的事件也可以再次使用,由followByAny()指定。
    • 例如:对于模式"a followedAny b",事件序列[a,c,b1,b2]匹配为{a,b1},{a,b2}
  • 除了以上模式序列以外,还可以定义“不希望出现某种近邻关系”

    • notNext() :严格的不近邻

    • notFollowedBy() : 不在两个事件之间发生

      比如:a not FollowedBy c,a Followed By b,a希望之后出现b,且不希望ab之间出现c

  • 需要注意的是

    • 所有模式序列必须以begin()开始

    • 模式序列不能以notFollowedBy()结束,必须后面指定与什么事件相邻,比如followedBy()

    • “not”类型的模式不能被optional(0次或多次)所修饰。

    • 此外,还可以为模式指定事件约束,用来要求在多长时间内匹配有效。

      比如:next.within(Time.seconds(10))

2.3 模式组

将一个模式序列作为条件嵌套在一个个体模式里,成为一个模式。

三、模式的检测

在指定要查找的模式序列后,就可以将其应用于输入流以检测潜在匹配。

调用CEP.pattern(),给定输入流和模式,就能得到一个PatternStream

DataStream<Event> input = ...
Pattern<Event, Event> pattern = Pattern.<Event>begin("start").where(...)...

// 进行模式的检测
PatternStream<Event> patternStream = CEP.pattern(input, pattern);

四、匹配事件的提取

创建PatternStream之后,就可以应用select或者flatselect方法,从检测到的事件序列中提取事件了。

select()方法需要输入一个select function作为参数,每成功匹配的事件序列都会调用它。

select()以一个Map<String, List>来 接收匹配到的事件序列,其中Key就是每一个模式的名称,而value就是所有接收到的事件的List类型

public OUT select(Map<String, List<IN>> pattern) throws Exception {
  IN startEvent = pattern.get("start").get(0);
  IN endEvent = pattern.get("end").get(0);
  return new OUT(startEvent, endEvent);
}

五、超时事件的提取

当一个模式通过within关键字定义了检验窗口时间时,部分事件序列可能因为超过窗口长度而被丢弃。为了能够处理这些超时的部分匹配,select和flatSelect API调用允许指定超时处理程序。

超时处理程序会接收目前为止由模式匹配到的所有事件,由一个OutputTag定义接收到的超时事件序列。

PatternStream<Event> patternStream = CEP.pattern(input, pattern);

// 定义一个OutputTag
OutputTag<String> outputTag = new OutputTag<String>("side-output"){};

/**
* 使用Select处理超时事件时,需要传入三个参数
* 第一个:接收超时数据的OutputTag
* 第二个:处理超时数据的规则
* 第三个:处理正常数据的规则
*/
SingleOutputStreamOperator<ComplexEvent> flatResult = 
  patternStream.flatSelect(
  outputTag,
  new PatternFlatTimeoutFunction<Event, TimeoutEvent>() {...},
  new PatternFlatSelectFunction<Event, ComplexEvent>() {...}
);

// 输出超时数据
DataStream<TimeoutEvent> timeoutFlatResult = 
  flatResult.getSideOutput(outputTag);
Flink cep动态模板+cep规则动态修改实践 Flink CEP 概念以及使用场景 1.什么是CEP? CEP的意思是复杂事件处理,例如:起床-->洗漱-->吃饭-->上班等一系列串联起来的事件流形成的模式称为 CEP。如果发现某一次起床后没有刷牙洗脸亦或是吃饭就直接上班,就可以把这种非正常的事件流匹配出来进行分析,看看今天是不是起晚了。 在真实场景中,起床,洗漱,吃饭,上班就是一个个事件数据。 CEP的特征如下: 目标:从有序的简单事件流中发现一些高阶特征; 输入:一个或多个简单事件构成... 阅读详情

相关推荐

Flink CEP-NFA详解

1 CEP-NFA是什么       Flink 的每个模式包含多个状态,模式匹配的过程就是状态转换的过程,每个状态(state)可以理解成由Pattern构成,为了从当前的状态转换成下一个状态,用户可以在Pattern上指定条件,用于状态的过滤和转换。       实际上Flink CEP 首先需要用户创建定义一个个pattern,然后通过链表将由前后逻辑关系的pattern串在一起,构

huahuaxiaoshao的博客 2182

flink(11) 复杂事件处理-flink cep

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

a724952091的博客 428

Flink CEP 理论总结

Flink CEP 理论总结

congge_study的博客 5377

Flink-cep基础

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

weixin_45604164的博客 311

【Flink】Flink CEP 案例

1.概述 我们先产生一个输入流,这个输入Event流由Event对象和event time组成 那么要使用EventTime,除了指定TimeCharacteristic外,在Flink中还要assignTimestampsAndWatermarks,其中分别定义了Eventtime和WaterMark, /** * 测试结果: * {start=[Event(id=1, name=start, money=1.0)], middle=[Event(id=5, name=middle,.

九师兄 1333

【flink】Flink-Cep实现规则动态更新

1.概述 我们是用processfunction实现的cep动态更新,然后看到这个是原生api感觉有趣,研究一下 原文:https://mp.weixin.qq.com/s/mh–wQvAWQq2tDPKq0-m8Q 规则引擎通常对我们的理解就是用来做模式匹配的,在数据流里面检测满足规则要求的数据。有人会问为什么需要规则动态变更呢?直接修改了规则把服务重启一下不就可以了吗,这个当然是不行的,规则引擎里面通常会维护很多不同的规则,例如在监控告警的场景下,如果每个人修改一下自己的监控阈值,就重启一下服务,必然会

九师兄 3200

flink入门-09-Flink CEP简介

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

q287573145的博客 7456

TSMaster二次开发实战:如何用Python搞定CAN/CANFD事件回调(附完整代码)

本文详细介绍了如何利用Python进行TSMaster二次开发,实现CAN/CANFD事件回调功能。通过实战代码演示,讲解了预发送与后处理回调的核心区别、注册流程、资源管理及性能优化技巧,帮助工程师高效构建自动化测试与数据监控应用。

star的博客 667

Flink之复杂事件处理CEP

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

积跬步,至千里。 1597

SUMO从入门到精通:手把手教你用开源工具完成智能网联车仿真(附Python接口教程)

本文提供了一份SUMO开源交通仿真工具的完整实战指南,从环境搭建、基础仿真到Python接口TraCI的深度应用。重点讲解了如何利用SUMO的高度可定制性进行智能网联车仿真,包括实现动态信号优先等核心算法,并介绍了与网络仿真器集成以构建高保真车联网通信环境的方法。

weixin_28327051的博客 536

基于STM32的多传感器融合的设施农业小型搬运机器人避障控制系统设计

针对设施农业场景中狭窄通道、障碍物多样(如农机具、作物植株、水管)的特点,设计一款基于 STM32 的小型搬运机器人避障控制系统。系统通过多传感器融合实现 360° 环境感知,采用模糊 PID 控制算法实现平滑避障,满足温室、大棚等场景的搬运需求。通过在温室环境测试,系统可实现对直径≥5cm 障碍物的有效检测(检测距离误差≤5%),避障转向半径≤30cm,平均功耗≤15W。后续可通过增加激光雷达(如 TFmini)提升远距离障碍物检测能力,结合 SLAM 算法实现路径规划。

weixin_42300449的博客 859

Flink CEP详解

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

huahuaxiaoshao的博客 1万+

SerDes系列之如何选择AC耦合电容

交流耦合电容用于隔离PCB互连时的直流分量(Common-mode voltage),同时传递交流分量(Voltage swing),其作用类似于一个高通滤波器,但是,如果电容容值选取不当,使用过程中会产生信号质量问题,典型的应用场景:当包含相同的长串1或0的NRZ数据应用于该高通滤波器时,会发生低频电压跌落,导致低频模式相关抖动(PDJ)。

一只豌豆象的博客 2350

Flink之CEP

Spring CEP(Complex Event Processing,复杂事件处理)是基于 Spring 框架 的一类解决方案,用于处理高吞吐、低延迟的数据流事件,尤其适用于金融风控、物联网监控、日志分析、实时监控等实时流处理场景。

youziguo的专栏 1009

Linux系统安装部署Redis完整教程(图文详解)

最近需要在Linux服务器安装部署Redis,参考了网上很多的文章,比较零碎,所以我自己写了一篇完整的Redis安装部署文档,在部署Redis之前重装了我的华为服务器,就是为了给大家一步步阐述我的操作过程,配合图文进行讲解更加通俗易懂!

黄团团的个人博客 6690

【Microchip】微芯 MPLAB® X IDE开发环境新建项目(点亮1颗LED灯)(常用右键菜单快捷键)

1.新建项目2. 选择芯片型号和调试器3.选择编译器4.项目命名和选择文件路径5.新建成功,给项目添加main.c7.将新建的mainXC16.c文件添加进项目6000000UL这三个就是。

Naiva的博客 446

flink cep

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

IT云清 5642

ARM Linux工控板+C# .NET Core:倍福ADS协议轻量化工业控制(附跨平台部署代码)

某自动化设备厂的倍福PLC控制系统曾依赖传统x86工控机:单台设备需配备1台Intel i5工控机(成本约8000元),功耗30W+,且Windows系统稳定性受工业环境干扰(如电磁辐射导致蓝屏)。更棘手的是,设备需部署在产线边缘(空间狭小),x86工控机的体积(4U机架)和散热需求(风扇噪音)难以适配;而多设备部署时,高硬件成本和高功耗导致年运维成本超20万元。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 954

Flink CEP学习线路指导1:Flink CEP入门

问题导读1.Flink CEP是什么?2.Flink CEP可以做哪些事情?3.Flink CEP和流式处理有什么区别?4.Flink CEP实现方式有哪些?Flink ...

about云 1513

高可用架构设计——多节点OpenClaw集群部署与负载均衡(2026企业级)

本文介绍了企业级OpenClaw高可用集群架构设计,重点阐述了多节点部署与负载均衡方案。架构采用分层设计,包括表现层、应用层、数据层和基础设施层,确保99.99%的可用性目标。详细配置了主节点、工作节点和存储节点规格,提供Kubernetes集群部署脚本示例,实现自动化的容器编排管理。通过硬件冗余、故障隔离和弹性扩展等可靠性原则,构建能够应对各种故障场景的稳定AI助手系统。

博客 420

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Flink: CEP详解

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

xinji 5543

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

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

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

a958014226的博客 1377

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【Flink】Flink cep

文章目录一、概念二、核心--Pattern API2.1、个体模式2.1.1、量词2.1.2、条件2.2、组合模式2.2.1、循环模式中的连续性2.2.2、模式操作2.3、模式的检测2.4、匹配事件的提取2.5、处理超时部分模式三、demo四、来源 一、概念 什么是 CEP: 复合事件处理(Complex Event Processing,CEP) Flink cep 是在 flink 中实现的一个复杂事件处理库 一个或多个简单事件构成的事件流通过一定的规则匹配,然后输出用户得到的数据–满足规则的复杂事件

w1992wishes的博客 588

Flink 之CEP介绍及应用

1、什么是CEP? CEP即复杂事件处理(Complex Event Processing,CEP)。 Flink CEP是在 Flink 中实现的复杂事件处理(CEP)库。 CEP 允许在无休止的事件流中检测事件模式,让我们有机会掌握数据中重要的部分。 一个或多个由简单事件构成的事件流通过一定的规则匹配,然后输出用户想得到的数据 —— 满足规则的复杂事件。 CEP用于分析低延迟、频繁产生的不同来源的事件流。CEP可以帮助在复杂的、不相关的事件流中找出有意义的模式和复杂的关系,以接近实时或准实时的获得通知

Doctor_96的博客 3323
上一篇: Flink 函数
下一篇: k-means 聚类算法
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力生活的黄先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值