Flink CEP基础学习与使用01

本文介绍了Flink CEP的基础知识,包括事件定义、事件关系和事件处理策略。通过三个逐步进阶的案例,展示了如何使用Pattren API处理复杂事件,包括连续两次登陆失败、JSON数据处理和使用IterativeCondition函数。作者强调了理解每个函数的返回值和使用场景的重要性,并计划进一步深入学习Flink CEP API。
摘要由CSDN通过智能技术生成

一,学习CEP的目的,说白了是因为业务需要,需要更深入的理解,并使用到更复杂的场景,先说一下 CEP是什么:

     复杂事件处理(CEP)是一种基于流处理的技术,将系统数据看做不同类型的事件,通过分析事件之间的关系,建立不同的事件关系序列库,并利用 过滤,关联,聚合等技术,最终由简单事件产生高级事件,并通过模式规则的方式对重要信息进行跟踪和分析,从数据中发掘有价值的信息。

    目前主要用于网络欺诈,故障检测,风险规避,智能营销等领域。

   1,环境准备,导入依赖

    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-cep-scala_2.11</artifactId>
        <version>${flink.version}</version>
    </dependency>

2,基本概念~耐着性子哟

    1)事件定义 

       简单事件:简单事件存在于现实场景,主要处理单一事件,比如对订单统计,超过一定数量就报告。

       复杂事件:复杂事件处理的不仅是单一的事件,也处理由多个事件组成的复合事件。

    2)事件关系

       时序关系:动作事件与动作事件之间,动作事件和状态变化事件之间,都存在时间顺序,事件与事件的时序关系决定了大部分的时序规则,例如A事件状态持续为1的同时B事件状态变为0。

       聚合关系:动作事件与动作事件之间,状态变化事件和状态变化事件之间都存在聚合关系,个体聚合为整体。例如A事件状态为1的次数为10 触发警报。

       层次关系:动作事件与动作事件之间,状态变化事件和状态变化事件之间都存在层次关系,父子关系,从父类到子类是具体化的,从子类到父类是泛化的。

      依赖关系:A事件触发前提是B事件触发。

      因果关系:A事件改变触发导致了B事件触发 。

   

    3)事件处理

      相应的规则执行相应的处理策略,这些策略包括了推断,查因,决策,预测等方面的应用。

      事件推断:从一部分状态属性值推断出另一部分的状态属性值,比如已经 1+x=2  x=1。

      事件查因:当出现结果状态,并且知道初始状态,可以查明是哪个动作导致的。

      事件决策:知道结果状态,并且知道初始状态,可以知道要执行什么动作。

      事件预测:知道初始状态,可以知道执行动作,可以知道结果状态。

   

  3,Pattren API

      FlinkCEP提供了Pattren API 用于对输入流数据的复杂事件规则定义,并从事件流中抽取事件结果。案例如下,抽取温度大于35度的信号事件结果:

import org.apache.flink.cep.scala.CEP
import org.apache.flink.cep.scala.pattern.Pattern
import org.apache.flink.streaming.api.scala.StreamExecutionEnvironment
import org.apache.flink.streaming.api.scala._

object FlinkCEP_demp {
  def main(args: Array[String]): Unit = {

    val env = StreamExecutionEnvironment.getExecutionEnvironment
    val data: DataStream[Event] = env.fromElements(
      Event("A",22.2,"test1"),
      Event("B",22.2, "test2"),
      Event("C",11.1, "test3"),
      Event("D",33.3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值