问题导读
1.Flink CEP是什么?
2.Flink CEP可以做哪些事情?
3.Flink CEP和流式处理有什么区别?
4.Flink CEP实现方式有哪些?
Flink CEP在Flink里面还是比较难以理解的。有的老铁甚至以为和Flink流式处理是差不多的。其实Flink CEP跟流式处理确实有相似的地方。但是Flink CEP处理的是流式数据,但是却并不是流式处理(datastream)。后面给大家详细讲解。
Flink CEP有的大家甚至不知道CEP是什么?CEP在Flink未产生以前,已经有CEP,并不是有了Flink才有CEP,我们这里重点是讲Flink CEP。CEP本身的含义是复杂事件处理。那么它为什么可以处理复杂事件,这就跟它的原理有关系了。所以我们需要了解NFA,NFA是什么?它的含义是非确定有限自动状态机。我们明确它的概念是什么就可以了。后面同样也会给大家补充。
由于官网只讲了CEP的基础部分,因此我们需要给大家补充原理部分,基础(组成)部分,以及编程方面的内容。
也就是我们按照下面线路来学习:
1.首先认识Flink CEP
2.Flink CEP原理机制
3.Flink CEP编程
通过上面三部分,我们来学习Flink CEP。
1.认识Flink CEP
1.Flink CEP是什么?
Flink CEP一个复杂事件处理库,它和机器学习库是一样的,也就是Flink CEP是Flink的一个分支,跟机器学习一样是Flink的一个分支。下面是官网的截图,大家可以参考。
亦可参考官网:
https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/libs/cep.html
由于版本会更新,网址可能会失效,大家可以自己访问官网。
https://flink.apache.org/
然后找到对应的版本即可
2.Flink CEP的作用是什么?
我们知道了Flink CEP是什么,接着我们需要看Flink能干啥?
Flink CEP可以在事件流中根据我们的设定的规则,检测出有意义的事情,并尽快做出响应。比如银行卡盗刷,在几秒内或则几分钟内,在不同的地方多次刷银行卡,Flink CEP能及时的检测到,并预警通知,让用户及时知道,银行卡有丢失的可能。对于DDos攻击,我们同样根据设置的pattern【规则】,来检测攻击的ip地址。
3.Flink CEP有什么特点?
Flink CEP特点很有意思,比如我们查询数据库,我们的数据是静态的,也就是数据是躺在数据库的,我们查询条件是可以随时的变的。可是Flink CEP查询是固定的,也就是规则Pattern是固定的,数据却是流动的。
当然有些公司,由于对Flink CEP,有修该规则Pattern的需求,所以把Flink CEP的Pattern做成可以修改的一种机制。但是总体来说,Flink CEP的规则一般来说是不会经常变化的。
对于规则或则Pattern是什么?大家根据下图可以有一个感性的认知,后面讲编程方面的知识,将会让大家看到Pattern的实现。
4.Flink CEP实现
Flink CEP通过什么实现?
官网亦提供了两种方式,如同Spark API和Spark sql,对于同一个功能,他们有两种不同的实现方式
1.Flink CEP API
2.Flink CEP SQL<
br />
1.Flink CEP API
内容比较多一些,如果我们全部看完下面文章后,我们关于Flink CEP的知识已经非常全面,并且你看网上的所有文章,都能看的懂,为CEP打下底子,还可以实现CEP程序,并且应用于实践。
1.什么是CEP以及量词的含义
通过这篇文章,我们懂了CEP是什么,以及CEP中量词的作用,量词更多的是我们对事件出现的次数的描述和表达。比如事件出现1次还是几次,还是事件是循环模式等。更多参考:
http://www.aboutyun.com/forum.php?mod=viewthread&tid=27142
2.条件分类
CEP条件分类,跟我们的SQL分类是类似的,是对事件的过滤,可以通过where,or,until 等关键字,更多可参考
http://www.aboutyun.com/forum.php?mod=viewthread&tid=27295
3.独立模式【Patterns】操作Pattern Operation
CEP有独立模式和组合模式,独立模式操作同样有过滤,条件组合,停止条件,亦有optional() 表示,这个事件可以发生,也可以不发生,greedy()则事件进入循环模式,表示事件尽可能重复,更多参考
http://www.aboutyun.com/forum.php?mod=viewthread&tid=27300
4.组合模式、循环模式介绍
对于组合模式讲的事件组合之后的关系,比如事件之间如何严格指定,第一个事件之后,必须发生第二个事件,比如我们这里以登陆为例,如果一个ip地址登陆失败了,则第二次,这个ip地址又失败了,则输出,这是一个严格的连续,使用next表示。如果第一个事件之后,第二个事件并没有发生,而是在第三个事件的时候发生。我们可以使用followBy(),这是宽松连续性。更多参考:
http://www.aboutyun.com/forum.php?mod=viewthread&tid=27308
5.组模式以及组操作【api】
对于组操作,对于begin是定义模式开始,对于next,followedBy,followedByAny则是添加新模式,并且定义了相邻模式的关系。这里可以让我们读懂CEP模式的程序,更多参考
http://www.aboutyun.com/forum.php?mod=viewthread&tid=27311
6.匹配跳过策略【api】
匹配跳过策略的应用场景,如果多个匹配成功,可能我不需要这么多,按照匹配策略,过滤下就可以。文中介绍了跳过匹配策略的4种类型,更多参考
http://www.aboutyun.com/forum.php?mod=viewthread&tid=27334
7.模式检测
仍然可以使用旧样式API,如select / flatSelect,但是在Flink1.8中引入PatternProcessFunction。CEP中,在PatternStream上调用select或flatSelect来获取某个模式下匹配到的事件来实现我们的业务逻辑。更多参考
http://www.aboutyun.com/forum.php?mod=viewthread&tid=27335
8.CEP库中的时间、例子、版本说明
Flink中有对于延迟事件的处理,CEP中也有这方面的考虑,更多参考
http://www.aboutyun.com/forum.php?mod=viewthread&tid=27337
看完上面,我们可以参考一些案例
Flink: CEP实现空气质量检测
https://www.aboutyun.com/forum.php?mod=viewthread&tid=27487
2.Flink CEP SQL
对于Flink CEP SQL是官网后期添加的,当前版本Flink1.9,已经发展的很不错了。下面关于Flink CEP SQL仅供参考
彻底明白Flink系统学习29-1:【Flink1.7】流概念之模式检测
https://www.aboutyun.com/forum.php?mod=viewthread&tid=26674
彻底明白Flink系统学习29-2:【Flink1.7】流概念之模式检测
https://www.aboutyun.com/forum.php?mod=viewthread&tid=26688
彻底明白Flink系统学习29-3:【Flink1.7】流概念之模式检测
https://www.aboutyun.com/forum.php?mod=viewthread&tid=26694
彻底明白Flink系统学习29-4:【Flink1.7】流概念之模式检测
https://www.aboutyun.com/forum.php?mod=viewthread&tid=
26695
4.Flink CEP与DataStream对比
虽然我们可能看了不少的内容,可能很多人的依然有疑惑,Flink CEP处理的是流式数据,DataStream处理的也是流式数据,那么他们到底有什么区别?
我们可以看到Flink CEP和流式处理:
CEP:更着重是在流式数据中查找,也就是对源数据不做处理,只是在数据流中查找匹配。
流式处理:更着重是对数据的加工和处理。一般不会在数据中去查找匹配。
比如下图,我们有流式数据如下:
1 2 3 4 5 6 7 1 2 2 3 。。。。
经过流式处理数据map都加1,
这时候流式数据处理为:
2 3 4 5 6 7 2 3 4 4。。。。
如果是CEP,则为:从源数据中查找匹配:123
1 2 3 4 5 6 7 1 2 2 3。。。。
于是我们找到匹配:
1 2 3
1 2 2 3
123
。。。。
上面我们就可以看到他们的不同,当然可能因为我们对于CEP查找匹配还不够了解,那么我们可以继续往下学习。
Flink CEP图
Flink streaming图
上面其实只是让我们了解了Flink CEP,后面将会给大家介绍Flink CEP原理以及编程。
以上内容部分录制视频【目前网上唯一Flink CEP视频】:
链接:
https://pan.baidu.com/s/1OgXlSEg9vFdugzhmjEgYHg 提取码: 96cv
关于CEP如果有问题,欢迎加微信w3aboutyun交流。
加入About云知识星球或则VIP可以免费获取Flink CEP更新视频。
About云 VIP会员套餐介绍
https://www.aboutyun.com/forum.php?mod=viewthread&tid=27305
About云:知识星球
https://www.aboutyun.com/forum.php?mod=viewthread&tid=26737
本公众号精彩文章推荐:
【1】Flink1.8新版发布:都有哪些改变
【2】我面试了我的前领导,他连做我的下属都不配
【3】技术太多学不过来?教你如何越学越带劲
【4】IT大咖工作十年总结的面试真经
【5】小白与大神存在哪些差距
【6】腾讯大数据面试及参考答案
【7】kafka学习线路指导入门:包括理论、部署、实战知识汇总整理
【8】技术走向管理一些深度思考