向已经有时间戳的源添加(滞后)水印的正确方法

afdcj2ne  于 2021-06-24  发布在  Flink
关注(0)|答案(0)|浏览(219)

首先,我对流处理非常陌生,如果我误解了概念,请随时纠正:)
我用的是apache fink。我的消息来源是 FlinkKafkaConsumer ,它已经添加了从Kafka获取的时间戳。在我的处理过程中,我希望能够使用水印(为什么超出了这个问题的范围)。
我想要的是抽象类提供的水印生成行为 BoundedOutOfOrdernessTimestampExtractor .
但该类仅提供: public abstract long extractTimestamp(T element); 如果重写它,它将提供元素,但不是最初由提供的时间戳 FlinkKafkaConsumer 这个 TimestampAssigner 接口实现者 BoundedOutOfOrdernessTimestampExtractor 提供了一个 public final long extractTimestamp(T element, long previousElementTimestamp) ,它会给您以前分配的,在这种情况下,您可以重新使用它。但这种方法是最终确定的 BoundedOutOfOrdernessTimestampExtractor ,因此无法使用。
所以我现在解决这个问题的方法是复制/粘贴 BoundedOutOfOrdernessTimestampExtractor ,并重写以供使用 previousElementTimestamp 作为时间戳。
我的问题是:这真的是最好的方法吗,还是有更好的选择?
我只是很惊讶不得不复制粘贴类,我习惯了(被)设计成这样的框架,这样的“基本”功能就可以用所包含的东西来完成(或者也许我想要的是非常深奥的:)

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题