目录
百战程序员,全站22050+开发课程+文档 ,学习精选优质好课快人一步!观看视频 快捷键ALT+N

大数据全系列 教程

1869个小节阅读:467.8k

收藏
全部开发者教程

408考研

JAVA全系列 教程

面向对象的程序设计语言

Python全系列 教程

Python3.x版本,未来主流的版本

人工智能 教程

顺势而为,AI创新未来

大厂算法 教程

算法,程序员自我提升必经之路

C++ 教程

一门通用计算机编程语言

微服务 教程

目前业界流行的框架组合

web前端全系列 教程

通向WEB技术世界的钥匙

大数据全系列 教程

站在云端操控万千数据

AIGC全能工具班

A

A A

White Night

阅读(228)
赞(0)

近邻关系

有了定义好的个体模式,就可以尝试按一定的顺序把它们连接起来,定义一个完整的复杂

事件匹配规则了。这种将多个个体模式组合起来的完整模式,就叫作“组合模式”(Combining Pattern),为了跟个体模式区分有时也叫作“模式序列”(Pattern Sequence)。

一个组合模式有以下形式:

组合模式其实就是一个“模式序列”,是用诸如 begin()、next()、followedBy()等,表示先后顺序的“连接词”将个体模式串连起来得到的。在这样的语法调用中,每个事件匹配的条件是什么、各个事件之间谁先谁后、近邻关系如何都定义得一目了然。每一个“连接词”方法调用之后,得到的都仍然是一个 Pattern 的对象;所以从 Java 对象的角度看,组合模式与个体模式是一样的,都是 Pattern。

模式之间的组合是通过一些“连接词”方法实现的,这些连接词指明了先后事件之间有着怎样的近邻关系,这就是所谓的“近邻条件”(Contiguity Conditions,也叫“连续性条件”)。

Flink CEP 中提供了三种近邻关系:

首先定义初始模式:

  • 严格近邻(Strict Contiguity)

匹配的事件严格地按顺序一个接一个出现,中间不会有任何其他事件。代码中对应的就是 Pattern.next()方法,名称上就能看出来,“下一个”自然就是紧挨着的。

  • 宽松近邻(Relaxed Contiguity)

宽松近邻只关心事件发生的顺序,而放宽了对匹配事件的“距离”要求,也就是说两个匹配的事件之间可以有其他不匹配的事件出现。代码中对应 followedBy()方法,很明显这表示“跟在后面”就可以,不需要紧紧相邻。

  • 非确定性宽松近邻(Non-Deterministic Relaxed Contiguity)

这种近邻关系更加宽松。所谓“非确定性”是指可以重复使用之前已经匹配过的事件;这种近邻条件下匹配到的不同复杂事件,可以以同一个事件作为开始,所以匹配结果一般会比宽松近邻更多。代码中对应 followedByAny()方法。

  • 除以上模式序列外,还可以定义“不希望出现某种近邻关系”:

    • .notNext() —— 不想让某个事件严格紧邻前一个事件发生

    • .notFollowedBy() —— 不想让某个事件在两个事件之间发生,后面还需要有模式才可使用,即:一个模式不能以notFollowedBy()模式结束。

注意:

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

  2. 模式序列不能以 .notFollowedBy() 结束

  3. “not” 类型的模式不能被 optional 所修饰

  4. 还可以为模式指定时间约束,用来要求在多长时间内匹配有效

实时效果反馈

1. 以下选项中关于Flink近邻关系的是?

A Pattern.next()严格近邻,匹配的事件严格地按顺序一个接一个出现,中间不会有任何其它事件。

B Pattern.followedBy()宽松近邻只关心事件发生的顺序,而放宽了对匹配事件的“距离”要求,也就是说两个匹配的事件之间可以有其他不匹配的事件出现。

C Pattern.followedByAny()非确定性宽松近邻这种近邻关系比宽松近邻更加宽松,所谓“非确定性”是指可以重复使用之前已经匹配过的事件

D 以上三个选项都正确。

答案:

1=>D

 

北京市昌平区回龙观镇南店村综合商业楼2楼226室

©2014-2023 百战卓越(北京)科技有限公司 All Rights Reserved.

京ICP备14032124号-2