Apache Flink - 匹配具有相同值的字段
Posted
技术标签:
【中文标题】Apache Flink - 匹配具有相同值的字段【英文标题】:Apache Flink - Matching Fields with the same value 【发布时间】:2021-10-27 10:59:47 【问题描述】:我们有一个用例,我们需要找到暴力破解模式,例如从同一设备和同一用户名登录 10 次失败,然后从同一用户名和同一设备成功登录。这应该在 10 分钟内完成。
假设我们有 10 个登录失败的 Windows 事件,用户 A 作为用户名,B 作为设备名,并且我们从用户 A 使用相同的设备 B 成功登录,我们应该发出警报。有没有办法将 CEP 链接到满足上述用例。设备和用户名事先不知道,字段的基数也不知道。
【问题讨论】:
【参考方案1】:使用 Flink CEP(使用 Java DataStream API),您可以使用 keyBy(event -> new Tuple2<>(event.user, event.device))
之类的东西,然后将模式与该密钥分区流进行匹配。使用 Flink SQL 的 MATCH_RECOGNIZE,你想PARTITION BY user, device
。
时间限制由WITHIN
子句处理。例如:
PATTERN (F10 S) WITHIN INTERVAL '10' MINUTE
DEFINE
F.status = 'failure',
S AS S.status = 'success'
【讨论】:
感谢答案正是我想要的 很高兴它有帮助。顺便说一句,我已经清理了这个例子。 如果您能接受答案,我将不胜感激。以上是关于Apache Flink - 匹配具有相同值的字段的主要内容,如果未能解决你的问题,请参考以下文章