我对apache flink中的标点水印和周期水印有点困惑。
假设我有一个包含传入数据和 POJO
数据流类型所属的始终按升序排列。
所以这就像 [{id: 1, ts: 12}, {id: 2, ts: 13}, ... , {id: 5, ts: 233445}]
我想知道在这种情况下使用哪种类型的水印分配程序。我应该用这个吗 AscendingTimestampExtractor..
或创建自定义 punctuated
一个?
我对apache flink中的标点水印和周期水印有点困惑。
假设我有一个包含传入数据和 POJO
数据流类型所属的始终按升序排列。
所以这就像 [{id: 1, ts: 12}, {id: 2, ts: 13}, ... , {id: 5, ts: 233445}]
我想知道在这种情况下使用哪种类型的水印分配程序。我应该用这个吗 AscendingTimestampExtractor..
或创建自定义 punctuated
一个?
1条答案
按热度按时间ktca8awb1#
我从来没有遇到过在生产中需要标点水印的情况,但有时我确实在试验时使用它,并希望能够明确控制水印何时插入流中。例如,在每个事件之后放置一个水印是一个坏主意,因为它涉及到开销,但是使用标点水印很容易做到,这使得计时器很容易在流中的特定点触发。在生产中我不会这样做,虽然在测试中需要这种级别的控制是合理的,但是有更好的方法(例如,使用某种测试工具)。
带标点的水印背后的设计意图是用于流中有特殊事件作为水印信号的情况。e、 例如,一个上游作业可能已经在流上加了水印并将其写入kafka,其中包含水印,或者一些事件来自具有可信时钟的设备,而其他的则没有。