Apache Beam设置自定义事件时间戳和水印

时间:2019-01-28 05:13:38

标签: apache-beam

我正在使用Apache Beam从Kafka阅读。我想使用有效负载中的事件时间戳,而不是默认的LogAppendTime,因为对Kafka的写入顺序不正确。

我看到了一个解决方案 Apache Beam: Error assigning event time using Withtimestamp

我们如何定义水印?考虑到它应该是单调的。

在方法

  

getWatermark(TimestampPolicy.PartitionContext ctx)

当事件迟到几个小时后,我们如何确定水印。

这似乎是乱序写入和事件时间窗口化的非常常见的情况。我没有太多关于这方面的文献。

1 个答案:

答案 0 :(得分:0)

您可以使用ParDooutputWithTimestamp从数据中提取时间戳,如此处https://beam.apache.org/documentation/programming-guide/#adding-timestamps-to-a-pcollections-elements