使用 GroupByKey,每个键都有自己的 window

Using GroupByKey with having each key in its own window

我有无限的数据源(Kafka 流)作为我的 Beam 作业的输入。

数据特征:

  1. 它们是元素组(组大小在 5-20 个元素之间)。
  2. 每个组的密钥是一个唯一标识符,仅用于该组。
  3. 组中第一个元素和最后一个元素之间的最大时间差小于 2 秒。

我要执行的是:

  1. 通过键将它们组合在一起
  2. 单独处理每个组。

我发现我可以使用 GroupByKey 函数来实现这个。

但是,由于它是一个无限源,我需要应用 windowing 否则 GroupBy 将永远无法完成。

问题是,我找不到一个 windowing 函数可以让我在不截断数据的情况下做到这一点。

我的问题:有没有一种方法可以让我将每个键分组到自己的 window 中,并在一定时间后关闭它?非常感谢

您可能会尝试使用 Session windows,其中每个会话都将对应于您输入数据集中的组。