我尝试通过使用Distinct.withRepresentativeValue
转换来引入基于唯一键的事件的重复数据删除。一切似乎都工作正常(例如,数据通过接收器写入),但是system lag
不断增长,watermark
被卡在适当的位置。
我在做什么错?如何配置窗口以便其开始进行?
Pipeline使用具有默认时间戳配置的PubSubIO源(我想默认是消息publishTime
)。经过一些初步处理后,事件将被删除重复数据,并写入BigQuery和其他PubSub输出主题。
我想设置重复数据删除的方式,使其在每个唯一键中输出一个事件,例如15分钟的窗口具有基于水印的触发,可避免数据丢失。问题在于Distinct
转换水印根本没有进行,并且系统滞后持续增长。
重复数据删除PTransform
如下所示:
override fun expand(input: PCollection<EventRecord>): PCollection<EventRecord> {
val duration = Duration.standardMinutes(15)
return input
.apply("Window", Window.into<EventRecord>(FixedWindows.of(duration))
.triggering(AfterWatermark.pastEndOfWindow()))
.apply("Distinct", Distinct.withRepresentativeValueFn(ExtractHashFn()))
}
可以通过here找到工作执行的屏幕截图