首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据流水印概念

数据流水印概念
EN

Stack Overflow用户
提问于 2021-04-17 12:35:03
回答 1查看 211关注 0票数 0

我使用事件时间戳在dataflow中创建了一个固定窗口为10分钟的新管道。因此,最初不会有消息,水印将是接近实时的。

现在假设在窗口10.10到10.20期间,在10.12,我开始发布频繁的消息,事件时间为10.12,持续20分钟,直到10.32。这是否意味着水印将保持在10.12到10.32,即使窗口时间超过10.20也不会前进,不会产生结果?

我只想了解水印在这种情况下会如何发展。是否等待事件时间为10.12的所有消息都被确认,事件时间大于10.12的新消息或休眠时间为2分钟。

我们在数据流中看到的数据水印是事件水印或系统水印

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-23 03:01:02

当尝试考虑水印时,有两个单独的事情需要考虑:(1)水印来自哪里,(2)它是如何通过管道传播的。

对于(2),如果您使用的是标准固定窗口,则水印会被上游水印和窗口的时间戳中的最小值所抑制。例如,假设进入GBK的数据是

代码语言:javascript
复制
<input watermark now at 10:10>            [output watermark is 10:10]
<input element with timestamp 1:12>.      [output watermark stays at 1:10]
<input watermark now at 10:13>            [output watermark now at 1:13]
<input element with timestamp 1:17>       [output watermark stays at 1:13]
<input element with timestamp 1:23>       ...
<input element with timestamp 1:14>       [output watermark stays at 1:13]

这里,此操作的输出水印将是1:13,由输入水印阻止。一旦系统确定到某一点的所有上游数据都已被接收,它可以更新输入水印,但输出水印仍保持在10:20,因为在该时间戳仍有数据(窗口)要发布。不管过了多少墙时间,水印都会被粘住。

代码语言:javascript
复制
<input watermark now at 10:22>            [output watermark stays at 1:20]

现在窗口被发布,随后输出水印前进。

代码语言:javascript
复制
<output window at 10:20>                  [output watermark stays at 1:20]
<output watermark advances to 10:22>      [output watermark now at 1:22]
...

至于(1),源负责发布带时间戳的数据和水印(例如“我保证不会在时间X之前发布带有时间戳的数据”)到管道中。对于如何“知道”未来元素的时间戳的界限,每个源都有自己的实现。IIRC,PubSub读取一个头部,并计算一个启发式的关于它期望在未来看到的消息。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67134688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档