我想使用 Flink 的事件时间戳,并计划实现一个简单的 emitWatermark,即 System.currentTimeInMillis - 10 秒。我的理解是翻滚窗口会触发start_time + window_interval + 10秒。因此,如果事件到达时间晚于水印,则这些事件将被丢弃。
有没有办法通过 Flink 将所有丢弃的事件写入像 S3 这样的接收器?
它应该可以通过侧面输出来实现。sideOutputLateData
运算符的文档说明如下:
将延迟到达的数据发送到由给定的 {@link OutputTag} 标识的端输出。数据 在水印通过窗口末尾加上允许的水印后被视为延迟 使用 {@link #allowedLateness(Time(} 设置的迟到。
因此,您可以通过输出标签获取延迟数据流并将其下沉到 s3。