Google cloud dataflow 累积延迟数据并在5分钟后触发

Google cloud dataflow 累积延迟数据并在5分钟后触发,google-cloud-dataflow,apache-beam,Google Cloud Dataflow,Apache Beam,我有一个Google数据流作业,它从PubSub读取数据,聚合de数据,最后将数据发送到InflluxDB。我想要实现的是在1分钟的windows中聚合数据,但在DB中每分钟只有一个条目。问题是我想允许延迟数据,所以我需要在5分钟内积累数据,然后向DB发送一个唯一的条目 可能吗?我试着用下面的代码来做,但我没有得到我想要的: input.apply(窗口 .into(固定窗口的持续时间标准分钟数(1))) .触发( 后处理时间 .pastFirstElementInPane() .plusDel

我有一个Google数据流作业,它从PubSub读取数据,聚合de数据,最后将数据发送到InflluxDB。我想要实现的是在1分钟的windows中聚合数据,但在DB中每分钟只有一个条目。问题是我想允许延迟数据,所以我需要在5分钟内积累数据,然后向DB发送一个唯一的条目

可能吗?我试着用下面的代码来做,但我没有得到我想要的:

input.apply(窗口
.into(固定窗口的持续时间标准分钟数(1)))
.触发(
后处理时间
.pastFirstElementInPane()
.plusDelayOf(持续时间.standardMinutes(5)))
.允许迟到(持续时间.标准分钟(5))
.丢弃Firedpanes()

我已经合作过一个类似的项目。您可以使用
.triggering(Never.ever())
忽略按时发送
窗格。然后,正如您已经做的那样,将延迟记录的允许延迟时间设置为5分钟

更改为
FIRE\u ALWAYS
也很重要。这样我们可以考虑没有延迟数据但没有发出准时记录的情况。一旦关闭窗口,它将始终发出设置为true的最后一个窗格

因此,对于您的情况,代码如下所示:

input.apply(窗口
.into(固定窗口的持续时间标准分钟数(1)))
.触发(从不.ever())
.允许延迟(持续时间。标准分钟(5),窗口。关闭行为。始终开火)
.丢弃Firedpanes()