在流模式下使用数据流进行反规范化

Denormalizing with dataflow in streaming mode

假设我有一连串的问题更新和用户更新。流包括每种类型实体的 "create" 消息。通过 questioner_id.

与用户相关的问题

典型的问题更新看起来像 {qid: 3 type: "Create", questioner_id: 5}, {qid: 3 type: "Comment"}.

典型的用户更新看起来像 {uid: 5 type: "Update" state: "CA"}, {uid: 5 type: "Update" state: "TX"}

我想要一个最终的 question_facts 数据集,看起来像 {ts: x qid: 3 comments: 1 user_state: "TX"} 每个问题更新都有一个条目,在问题 "Create" 事件发生后发生的用户更新。

这样做的方法是拥有两个 PCollection,一个一直 window 然后 CoGroupByKey 吗?

如果管道的输入是固定数据集,则您建议的方法将起作用。

如果您有更新流并且想要输出结果流,则需要弄清楚何时需要输出。例如,您可以通过在输入的窗口上设置触发器 AfterPane.elementCountAtLeast(1) 来在每次发生更新时输出。