大数据 -131 Flink CEP 实战 24 小时≥5 次交易 & 10 分钟未支付检测 案例附代码

TL;DR
场景:需要在流上做累计计数(24h≥5 次)和超时未支付检测。结论:用 CEP 的 times/timesOrMore/within 组合,配合 skipPastLastEvent 抑制重复;Watermark 用官方策略即可,代码可复制即跑。产出:两段可运行示例(含 Watermark)、侧输出模板、易错点速查。
 
  
 Flink CEP
上节的案例:Flink CEP 详解 - 捕获超时事件提取全解析:从原理到完整实战代码教程 恶意登录案例实现
基本概念
Flink CEP(Complex Event Processing)是 Apache Flink 提供的一个扩展库,用于实时复杂事件处理。通过 Flink CEP,开发者可以从流数据中识别出特定的事件模式。这在欺诈检测、网络安全、实时监控、物联网等场景中非常有用。
Flink CEP 的核心是通过定义事件模式,从流中检测复杂事件序列。具体来说,CEP 允许用户:
- 定义事件模式:用户可以描述感兴趣的事件组合(如连续事件、延迟事件等)。 
- 匹配模式:Flink CEP 从流中搜索与定义模式相匹配的事件序列。 
- 处理匹配结果:一旦找到符合模式的事件序列,用户可以定义如何处理这些匹配。 
基本组成部分
- Pattern(模式):描述要在事件流中匹配的事件序列。可以是单个事件或多个事件的组合。常用的模式操作包括 next(紧邻)、followedBy(接续)等。 
- PatternStream(模式流):通过应用模式定义,将事件流转变为模式流。 
- Select 函数:用于从模式流中提取匹配的事件序列 
CEP 开发步骤
开发 Flink CEP 应用的基本步骤包括:
定义事件流:创建一个 DataStream,表示原始的事件流。定义事件模式:使用 Flink CEP 的 API 定义事件模式,例如连续事件、迟到事件等。将模式应用到流中:将定义好的模式应用到事件流上,生成模式流 PatternStream。提取匹配事件:使用 select 函数提取匹配模式的事件,并定义如何处理这些事件。
使用场景
- 欺诈检测:可以通过 CEP 识别连续发生的异常行为,如频繁的登录尝试等。 
- 网络监控:检测一段时间内的特定网络攻击模式。 
- 物联网:分析传感器数据,检测设备异常、温度异常等。 
- 用户行为分析:分析用户在某一时间段内的行为序列,从而作出预测或检测异常。 
案例 2:检测交易活跃用户
业务需求
业务上需要找出 24 小时内,至少 5 次有效交易的用户。
- 获取数据源 
- Watermark 转化 
- keyBy 转化 
- 至少 5 次:timeOrMore(5) 
- 24 小时之内:within(Time.hours(24)) 
- 模式匹配 
- 提取匹配成功的数据 
编写代码
运行结果
运行结果如下图所示:
 
 案例 3:超时未支付
业务需求
找出下单后 10 分钟没有支付的订单
- 获取数据源 
- 转 Watermark 
- keyBy 转化 
- 做出 Pattern (下单以后 10 分钟未支付) 
- 模式匹配 
- 取出匹配成功的数据 
编写代码
运行结果
控制台输出为:
对应截图如下:
 
 其他系列
🚀 AI 篇持续更新中(长期更新)
AI 炼丹日志-29 - 字节跳动 DeerFlow 深度研究框斜体样式架 私有部署 测试上手 架构研究,持续打造实用 AI 工具指南!AI-调查研究-108-具身智能 机器人模型训练全流程详解:从预训练到强化学习与人类反馈🔗 AI模块直达链接 
💻 Java 篇持续更新中(长期更新)
Java-154 深入浅出 MongoDB 用 Java 访问 MongoDB 数据库 从环境搭建到 CRUD 完整示例 MyBatis 已完结,Spring 已完结,Nginx 已完结,Tomcat 已完结,分布式服务正在更新!深入浅出助你打牢基础!🔗 Java模块直达链接
📊 大数据板块已完成多项干货更新(300 篇):
包括 Hadoop、Hive、Kafka、Flink、ClickHouse、Elasticsearch 等二十余项核心组件,覆盖离线+实时数仓全栈!大数据-278 Spark MLib - 基础介绍 机器学习算法 梯度提升树 GBDT 案例 详解🔗 大数据模块直达链接
版权声明: 本文为 InfoQ 作者【武子康】的原创文章。
原文链接:【http://xie.infoq.cn/article/6e8716d56d6ea8d7bd43bc235】。文章转载请联系作者。








 
    
评论