【问题标题】:Apache Flink - Matching multiple patternsApache Flink - 匹配多种模式
【发布时间】:2021-12-24 04:29:13
【问题描述】:

我们有一个要求,多个事件将通过给定的模式进行匹配。

模式 1 后接 10 分钟内 模式 2 后接 10 分钟内 模式 3 .

模式 1:10 分钟内使用同一用户名和同一设备登录失败 10 次。

模式 2:10 分钟内使用相同用户名和不同设备登录失败 10 次。

模式 3:使用相同的用户名和任何设备成功登录。

请告诉我 apache fink 是如何管理这种情况的

【问题讨论】:

    标签: apache-flink flink-streaming flink-sql flink-cep flink-batch


    【解决方案1】:

    这是一种基于分层或分层分解的方法。匹配内部模式,根据这些匹配创建一个新流,然后将外部(uber)模式应用于这个新的更高级别的流。

    实现一个使用 match_recognize 匹配模式 1 的查询 Q1,生成如下表作为其结果:

    Query Username TimeOf10thFailedLogin
    ----- -------- ---------------------
    Q1    david    2021-11-11 22:55:19
    Q1    fred     2021-11-11 23:10:16
    

    以及为模式 2 生成这样的表的查询 Q2

    Query Username TimeOf1stFailedLogin
    ----- -------- --------------------
    Q2    david    2021-11-11 22:57:19
    Q2    fred     2021-11-11 23:11:16
    

    对 Q3 做类似的事情。

    然后应用一个新的超级模式到

    select * from Q1 union all select * from Q2 ...
    

    或者只是在适当的条件下加入表格。

    有关使用 match_recognize 匹配内部模式的示例,请参阅https://stackoverflow.com/a/69749807/2000823。

    【讨论】:

      猜你喜欢
      • 2022-08-19
      • 2019-06-10
      • 1970-01-01
      • 2013-12-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-12
      • 2017-03-23
      • 1970-01-01
      相关资源
      最近更新 更多