首先,我对流处理非常陌生,如果我误解了概念,请随时纠正:)
我用的是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
作为时间戳。
我的问题是:这真的是最好的方法吗,还是有更好的选择?
我只是很惊讶不得不复制粘贴类,我习惯了(被)设计成这样的框架,这样的“基本”功能就可以用所包含的东西来完成(或者也许我想要的是非常深奥的:)
暂无答案!
目前还没有任何答案,快来回答吧!