google-cloud-dataflow - 从 Kafka 源读取时在光束管道中使用事件时间
问题描述
我有一个从 Kafka 源读取的光束管道(AppendLogTime 不可用),时间戳嵌入在 Kafka 流中的数据对象中。
我想为我的管道使用事件时间,经过一番谷歌搜索后,我看到一些解决方案在从 KafkaIO 读取数据时使用了 CustomeFieldTimePolicy(提取数据对象的时间戳并将其用于设置水印)。
但后来我看到另一个解决方案,它使用 WithTimestamps.of() 为元素分配时间戳。
我的问题是,这两种方法有什么不同?因为对我来说,他们似乎做着非常相似的工作。
谢谢你。
解决方案
您想使用CustomFieldTimePolicy
. 这将调整用于计算 Kafka 源的水印的时间戳。
WithTimestamps.of()
用于更改管道中元素的时间戳,但不影响水印。这是一个非常简单的基于ParDo
. 它可以做的转换是有限的,因为它被禁止与水印相矛盾。
推荐阅读
- azure - MS Teams 聊天机器人自定义授权
- typescript - 类验证器是如何工作的?
- luigi - 带有单独任务的 Luigi 依赖项规范问题
- powershell - 文件中的 SecureString“随机”停止工作
- sas - SAS将数字变量覆盖为字符
- java - Jira ServiceDesk 用户创建 - 此资源需要 WebSudo
- reactjs - 在反应导航 v5 中传递道具的问题
- java - 在 Java Lambda 中无法使用 Reddison 客户端(使用 samLocal 和 localstack)
- sql - 可以使用 Where 子句进行拆分,批量拆分和导出表
- javascript - 限制 HTML 的用户输入当前时间之后