apache-flink - 我们可以调用 SourceFunction#collectWithTimestamp 摄取时间中指定的时间戳吗
问题描述
SourceFunction 提供了一个方法:
void collectWithTimestamp(T element, long timestamp);
从摄取时间的定义来看,源提供的时间戳看起来就像 event ingestion time
,不确定我是否理解正确。
但是从这个方法的javadoc中,它说:
On {@link TimeCharacteristic#IngestionTime}, the timestamp is overwritten with the system's current time, to realize proper ingestion time semantics
我不太明白 javadoc 是什么意思
解决方案
如果TimeCharacteristic
是IngestionTime
,那么您提供的任何时间戳都collectWithTimestamp
将被忽略并覆盖。
例如,如果您的源是 Kafka,并且您的事件具有 Kafka 代理提供的日志附加时间时间戳,那么您可能会在collectWithTimestamp
. 但是,如果您随后将摄取时间指定为时间特征,那么这些事件时间时间戳将被覆盖。
所以“我们可以调用 SourceFunction#collectWithTimestamp 摄取时间中指定的时间戳”的答案是否定的。源可以自由地使用它喜欢的任何逻辑来生成这个时间戳,它很可能是一个适当的事件时间时间戳。
事件时间时间戳和摄取时间时间戳之间的一个主要区别是事件时间时间戳是可重现的——您可以运行相同的作业两次并获得完全相同的结果。摄取时间并非如此。
推荐阅读
- javascript - 如果选中复选框,则复制值
- python - snappass 代理设置 https 或 http
- powershell - 在powershell中将数据导出到csv
- javascript - 我只能从矩形的某个点而不是整个矩形获取数据
- cmake - CMake 错误:catkin_make :::Running command 运行命令:“/ws/build”中的“make -j4 -l4”
- python - TensorFlow 和 Keras 不能与 Anaconda 一起使用或更新
- codeigniter - 有没有办法在 CodeIgnitor 中循环 $this->input->post() 数组?
- apache-flink - Flink Joins on Non-key 属性
- python - 无法遍历 Pandas Dataframe 中的行
- python - 为什么每次都会给我带来磅数的结果?