gpt4 book ai didi

google-cloud-dataflow - Google Dataflow 中的时间戳偏差

转载 作者:行者123 更新时间:2023-12-01 12:30:06 27 4
gpt4 key购买 nike

我正在尝试运行从 pubsub 主题读取并写入 bigquery 的管道。时间戳是从主题消息中解析出来的。但是,我收到了一条关于允许的时间戳偏差的错误,并引用了下面复制的文档。

getAllowedTimestampSkew public Duration getAllowedTimestampSkew() Returns the allowed timestamp skew duration, which is the maximum duration that timestamps can be shifted backward in DoFn.Context.outputWithTimestamp(OutputT, org.joda.time.Instant). The default value is Duration.ZERO, in which case timestamps can only be shifted forward to future. For infinite skew, return Duration.millis(Long.MAX_VALUE).

我想知道的是为什么默认允许偏差为零? Dataflow 的重点不就是处理延迟和乱序的数据吗?数据何时会转移到 future ?

最佳答案

Dataflow 使用水印来处理延迟和无序数据,以跟踪输入完成的事件时间点。使用对未决 PubSub 消息的时间戳的了解来跟踪 PubSub 的水印。这依赖于了解每个 PubSub 消息和每个元素在流经管道时与哪些时间戳相关联。输出时间戳偏移的事件违反了这一知识,并可能导致不正确的行为,包括需要使用新的时间戳重新分配窗口以使管道的其余部分正确运行和/或元素因“太晚”而被丢弃。

博客文章 Streaming 101Streaming 102更详细地讨论水印和处理事件时间的概念。

在这种情况下,由于您使用的是 PubSubIO,因此您可以利用以下事实:它是一个内置源,并且具有用于跟踪 PubSub 队列中消息事件时间水印的特殊逻辑。在每条发布的消息上放置一个时间戳标签,然后使用 PubSubIO#timestampLabel与消息的事件时间相关联。

关于google-cloud-dataflow - Google Dataflow 中的时间戳偏差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35006279/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com