使用Distinct变换时水印不前进

时间:2019-04-25 17:36:28

标签: streaming google-cloud-dataflow apache-beam

我尝试通过使用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找到工作执行的屏幕截图

0 个答案:

没有答案