会话窗口是否已经将数据洗牌到同一个工作人员中?

Does session windowing already shuffle data into the same worker?

我的管道的简单伪代码:

pipeline
    .apply(KVPair)
    .apply(sessionWindow)
    .apply(groupByKey)

我的问题是:为了使会话 window 正常工作,Beam 是否已经将所有数据以相同的密钥随机分配给同一个工作人员?或者它仍然使用来自不同机器的相同密钥进行 map-reduce 来收集 windows?我深入研究了 beam 文档,但没有看到 session windowing 是如何在幕后运作的。

我问的原因是因为我知道每个 window 中的数据量很小,所以我想找到一种方法来确保所有具有相同键的数据最终都在之前是同一个工作人员,因此我可以减少 groupByKey 的操作时间,稍后可以通过改组来减少。

Window 转换仅配置管道的窗口;实际工作发生在 GroupByKey 内部。

您的管道将执行您想要的操作:将有一个随机播放作为 GroupByKey 转换的一部分。