0

我有以下要求:

  • 从发布子主题中读取事件
  • 采取持续时间 30 分钟和周期 1 分钟的窗口
  • 在该窗口中,如果给定 id 的 3 个事件都匹配某个谓词,那么我需要在不同的 pub 子主题中引发事件
  • 该事件应在第三个事件进入分组 ID 时立即引发,因为这是用于检测欺诈行为。在一个窗格中,有许多 id 有 3 个与我的谓词匹配的事件,因此我可能需要在每个窗格中发出多个事件

我能够编写一个使用 PCollection 的函数,它会根据我的业务逻辑进行必要的分组、逻辑和过滤并发出事件。

问题:

  1. 由于重叠的滑动窗口,输出 PCollection 包含重复项。我知道这是滑动窗口的预期行为,但我怎样才能避免这种情况,同时保持在同一个数据流管道中。我意识到我可以在外部系统中进行重复数据删除,但这只会增加我的系统的复杂性。
  2. 我还需要编写某种触发器,每次在窗口中达到我的条件时都会触发
  3. 数据流是否适合这种类型的实时检测场景

非常感谢

4

1 回答 1

1
  1. 您可以将输出重新窗口化PCollection到全局窗口(使用常规Window.into())并使用GroupByKey.
  2. 听起来您已经将感兴趣的事件作为PCollection. 为了“为每个事件做一些事情”,您所需要的只是ParDo.of(whatever action you want)应用到这个集合。触发器会做其他事情:它们控制当 aV中特定键的新值到达K时会发生什么GroupByKey<K, V>:是删除该值,还是缓冲它,或者传递缓冲的值以KV<K, Iterable<V>>供下游处理。
  3. 是的 :)
于 2017-12-11T22:25:50.240 回答