流媒体中的网络洗牌



因此,keyBygroupBy会导致重新划分流的网络洗牌。据说它非常昂贵,因为它涉及到网络通信以及序列化和反序列化等。

例如,如果我运行以下操作符:

map(Mapper1).keyBy(0).map(Mapper2)

如果并行度为2,我会得到这样的结果:

Mapper1(1) --/- Mapper2(1)
X
Mapper1(2) -/-- Mapper2(2)

最后,Mapper1中具有相同密钥的所有记录都被分配到Mapper2中的相同分区。

我的问题是:

我想知道在流媒体中的keyBygroupBy期间会发生什么。每个处理过的元素都被每个子任务序列化和反序列化?如何将keyBygroupBy的成本与另一个操作进行比较?

此外,我熟悉批处理系统中partitioner的概念,但当我试图将其应用于流媒体时,我有点困惑。

谢谢!

因此Apache Flink缓冲任务的传出,然后将其发送到下一个任务进行处理。setBufferTimeout是作业级别上的一个参数,可以通过StreamExecutionEnvironment进行配置,此超时的默认值为100毫秒。在此之后,即使缓冲区未满,也会自动发送缓冲区。

此外,以下链接确实有助于了解详细信息:

https://flink.apache.org/2019/06/05/flink-network-stack.html

https://flink.apache.org/2019/07/23/flink-network-stack-2.html

相关内容

  • 没有找到相关文章

最新更新