我们正在尝试使用数据流的处理时间独立性来启动一个新的流式传输作业并通过 Pub/Sub 将我们所有的数据重播到其中,但遇到了以下问题:
管道的第一阶段是事务 id 上的 groupby,会话窗口为 10 秒,丢弃已触发的窗格并且不允许延迟。因此,如果我们不指定重播 pub/sub 主题的 timestampLabel,那么当我们重播到 pub/sub 时,所有事件时间戳都是相同的,并且 groupby 会尝试将所有存档数据一直分组到事务 id 中。不好。
如果我们将 timestampLabel 设置为存档数据中的实际事件时间戳,并在 pub/sub 主题中一次重播 1 天,那么它适用于第一天的事件,但一旦这些事件用完,数据重播发布/订阅的水印以某种方式向前跳转到当前时间,并且所有后续重播天数都将作为延迟数据丢弃。我真的不明白为什么会发生这种情况,因为它似乎违反了数据流逻辑独立于处理时间的想法。
如果我们将 timestampLabel 设置为存档数据中的实际事件时间戳,并将其全部重播到 pub/sub 主题中,然后启动流式作业以使用它,数据水印似乎永远不会前进,而且似乎什么也没有从groupby中走出来。我也不太明白这是怎么回事。