在flink1.13版本中,给事件分配水印,直接在流上,调用时间戳和水印分配策略,传入WatermarkStrategy。
参考官网:
WatermarkStrategy
.<Tuple2<Long, String>>forBoundedOutOfOrderness(Duration.ofSeconds(20))
.withTimestampAssigner((event, timestamp) -> event.f0);
其中,<Tuple2<Long, String>>表示流中数据的类型,比如<User>,表示流是有User对象组成。
Duration.ofSeconds(20)表示,窗口等待时间。如果不需要等待,此处修改为Duration.ZERO。
(event, timestamp),其中event表示事件,timestamp表示当前内部时间戳,如果还没有分配时间戳,则为负值。
这里,可以从event中选择某一个字段,转成时间戳毫秒值返回,也可以使用当前内部时间戳timestamp,或者使用系统当前时间System.currentTimeMillis(),等等。

本文介绍了在Flink 1.13版本中如何为事件分配水印和时间戳。通过调用`WatermarkStrategy`,可以为 Tuple2<Long, String> 类型的数据流指定最大乱序度为20秒的水印策略。时间戳分配器示例展示了如何从事件的f0字段提取时间戳。理解这一机制对于实时流处理和窗口操作至关重要。

793

被折叠的 条评论
为什么被折叠?



