我们可以调用SourceFunction#collectWithTimestamp摄取时间中指定的时间戳吗



SourceFunction提供的方法如下:void collectWithTimestamp(T element, long timestamp);

从摄取时间的定义来看,源提供的时间戳看起来完全像事件ingestion time,不确定我是否正确理解了。

但从这个方法的javadoc来看,它说:

On {@link TimeCharacteristic#IngestionTime}, the timestamp is overwritten with the system's current time, to realize proper ingestion time semantics

我不太明白javadoc是什么意思

如果TimeCharacteristicIngestionTime,那么您在collectWithTimestamp中提供的任何时间戳都将被忽略并覆盖。

例如,如果您的源是Kafka,并且您的事件具有由Kafka代理提供的日志附加时间戳,那么您可能在collectWithTimestamp中使用这些时间戳。但是,如果将摄取时间指定为时间特征,那么这些事件时间戳将被覆盖。

因此,";我们可以调用SourceFunction#collectWithTimestamp摄取时间"中指定的时间戳吗;不是。源可以自由使用它喜欢的任何逻辑来生成这个时间戳,而且它很可能是一个合适的事件时间戳。

事件时间戳和摄取时间戳之间的一个主要区别是,事件时间戳是可复制的——您可以运行两次相同的作业,并获得完全相同的结果。摄入时间并非如此。

相关内容

  • 没有找到相关文章

最新更新