0

假设我想计算每分钟后过去 10 分钟内某个指标的平均值,并将其与每分钟后过去 20 分钟内相同指标的平均值进行比较。我需要 2 个窗口(不是 10 个滑动窗口与 20 个滑动窗口)或 2 个固定持续时间的窗口,并提前触发。我需要 2 个窗口,它们应该每分钟向前滚动一分钟(每个持续时间为 10 分钟和 20 分钟)。或者,如果我可以丢弃除最新的滑动窗口之外的所有内容,我的问题就可以解决。否则多个滑动窗口非常昂贵。

你能帮忙吗?自定义 WindowFn() 函数将非常有帮助

4

1 回答 1

1

我必须更新我最终所做的事情。我创建了一个 AllowedLateness 为 1 小时的全局窗口,并使用 Accumulating Panes 永久重复触发每一分钟。在这个全局窗口中,我对过去 10 分钟内具有时间戳(Present Instant.minus 10 分钟)和过去 20 分钟内的事件(Present Instant.minus 20 分钟)的元素应用了 DoFn 过滤,以创建 2 个不同的 PCollection。我应用了这次过滤两次 - 一次到全局窗口的触发器输出,将其添加到 PCollection(s) 10 分钟、20 分钟,然后再次到集合本身,以删除所有不再属于时间的部分期间。目前,这 2 个 PCollection(s) 用作滚动窗口,但我需要审核结果以确认这是否确实有效。

于 2019-02-22T15:53:57.337 回答