Apache Flink -匹配具有相同值的字段



我们有一个用例,我们需要找到暴力破解的模式,比如从同一设备和相同用户名登录10次失败,然后从相同用户名和相同设备成功登录。这应该在10分钟内完成。

让我们假设我们有10个登录失败的windows事件,用户A作为用户名,B作为设备名,我们有一个成功的登录从用户A与相同的设备B,我们应该提出一个警告。是否有办法链接CEP来满足提到的用例?设备和用户名不会事先知道,字段的基数也不知道。

对于Flink CEP(使用Java DataStream API),您将使用类似keyBy(event -> new Tuple2<>(event.user, event.device))的东西,然后针对该键分区流匹配模式。使用Flink SQL的MATCH_RECOGNIZE,您想要PARTITION BY user, device

时间约束由WITHIN子句处理。例如:

PATTERN (F{10} S) WITHIN INTERVAL '10' MINUTE
DEFINE
F.status = 'failure',
S AS S.status = 'success'

最新更新