【问题标题】:Flink timestamps in events & stream records事件和流记录中的 Flink 时间戳
【发布时间】:2021-02-23 04:40:13
【问题描述】:

查看 Flink 的文档和书籍我对时间戳有疑问:如果流设置为事件时间模式,这意味着时间戳在进入 Flink 之前具有源的时间(甚至在通过消息队列之前) ,可能是 Kafka),为什么 Flink 将时间戳作为元数据附加到记录中? 幻灯片 3 根据它们的说明具有不同类型的时间戳: https://www.slideshare.net/dataArtisans/apache-flink-training-time-and-watermarks

如果时间戳在事件内部,为什么要将该值传递给记录的元数据?事件和记录之间到底有什么区别?

【问题讨论】:

标签: apache-flink flink-streaming


【解决方案1】:

时间戳并不总是来自事件内部。例如,Flink Kafka 消费者将 Kafka 元数据中的时间戳复制到 Flink 元数据中。 (如果您希望覆盖这些时间戳,可以提供时间戳分配器。)

流记录元数据中携带的这些时间戳在内部以各种方式使用:

  • 内置的事件时间窗口分配器使用这些时间戳将事件分配给窗口
  • CEP 使用这些时间戳将流按事件时间顺序排序
  • Flink SQL 也可以使用这些时间戳进行排序、窗口化等。

【讨论】:

  • 您能注意一些链接,例如 Kafka 时间戳,以及如何将它们提取到 Flink 事件的元数据中吗?我不知道时间信息是否从一个字段手动传递到 Flink 元数据,或者是否有一些功能可以做到这一点......另外,如果我将时间戳定义为事件时间,然后在接收来自 for 的事件后附加时间戳例如 Kafka 会出现什么问题或错误?
  • 我重写了我的答案以澄清发生了什么。您不需要从元数据中提取时间戳——这会自动发生。有关更多信息,请参阅文档。 ci.apache.org/projects/flink/flink-docs-stable/dev/…
猜你喜欢
  • 1970-01-01
  • 2019-04-18
  • 2022-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多