将数据转换为发布订阅事件

Transform data to pubsub events

我有一个数据流管道收集用户数据,如导航、购买、crud 操作等。我有这个要求能够实时识别模式,然后调度其他服务可以侦听的 pubsub 事件以提供用户实时提示、优惠或促销。

我正在考虑开始按用户 ID 对事件进行分组,然后如果匹配的模式创建一个 PCollection,其中包含需要通过 pubsub 触发的事件名称。

这是正确的方法吗?有没有更好的方法?

对于某些用例,肯定可以

如果您使用 session based windowing in combination with early firings(每个元素到达时触发)。每次新元素到达时,您都可以获得识别模式所需的所有数据。

但是,根据推送用户数据的速率和会话的大小,这可能会导致在 PCollection 中保存大量数据并重复此模式匹配很多(在相同的数据上),因为您必须重用会话中的所有数据。此外,您不能使用在此会话 .

之前到达的 元素

有时,为每个用户保留一个状态(无需为该会话的所有用户数据重做模式匹配)可能会更好。使用状态实际上将消除使用窗口的需要。 新流程现在看起来像这样:

对于到达的每个元素:

  1. 获取当前状态

  2. 计算新状态(基于旧状态和新元素)

  3. 如果需要,向 PubSub 发送消息。

要保持​​状态,您可以使用 BigTableDatastore.