网络流式传输

时间:2020-03-19 16:50:24

标签: spark-streaming apache-flink flink-streaming

因此,keyBygroupBy会导致网络重排,从而对流进行重新分区。据说它非常昂贵,因为它涉及网络通信以及序列化和反序列化等。

例如,如果我运行以下运算符:

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

具有2的并行度,我会得到这样的东西:

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

最后,Mapper1中所有具有相同键的记录都分配给Mapper2中的同一分区。

我的问题是:

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

此外,我熟悉批处理系统中分区器的概念,但是当我尝试将其应用于流式处理时会感到困惑。

谢谢!

1 个答案:

答案 0 :(得分:1)

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

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

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

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