从 Kafka 源读取时在 Beam 管道中使用事件时间

Use event-time in beam pipeline when reading from Kafka source

我有一个从 Kafka 源读取的光束管道(AppendLogTime 不可用),时间戳嵌入在 Kafka 流中的数据对象中。

我想为我的管道使用事件时间,在谷歌搜索后我看到一些解决方案在从 KafkaIO 读取数据时使用 CustomeFieldTimePolicy(提取数据对象的时间戳并将其用于设置水印)。

但后来我看到另一个解决方案,它使用 WithTimestamps.of() 为元素分配时间戳。

我的问题是,这两种方法有什么不同?因为在我看来他们做的工作非常相似。

谢谢。

您想使用CustomFieldTimePolicy。这将调整用于计算 Kafka 源水印的时间戳。

WithTimestamps.of() 用于改变管道中元素的时间戳,但不影响水印。它是基于 ParDovery simple transform。它可以做的转换是有限的,因为它被禁止与水印相矛盾。