Apache flink 理解Flink(批处理)中操作员之间的数据传输
我还在苦苦思索flink是如何在不同的操作符之间“交换/转换”数据的,以及操作符之间的实际数据会发生什么 以上面的DAG为例:Apache flink 理解Flink(批处理)中操作员之间的数据传输,apache-flink,flink-batch,Apache Flink,Flink Batch,我还在苦苦思索flink是如何在不同的操作符之间“交换/转换”数据的,以及操作符之间的实际数据会发生什么 以上面的DAG为例: 数据集被转发/传输到GroupReduce运算符的所有并行实例,数据将根据GroupReduce转换进行缩减 新数据的所有被转发到过滤器->映射->映射操作数,即GroupReduce运算符的一个并行实例所消耗的所有数据被传输到过滤器->映射->映射运算符的一个实例(不需要序列化/反序列化,因此操作员可以访问GroupReduce运算符生成的数据) GroupRe
因此,在组合器之后,总是有一个洗牌阶段/分区将所有上游运算符连接到所有下游运算符。请检查以澄清什么是组合器。Flink不能为您链接
GroupReduce
和Filter
运算符,因为在GroupReduce
之后有两个不同的筛选器t、 第二个过滤器位于散列分区之后,我假设您使用的是一些keyBy
操作符。这与Spark中的洗牌阶段相同,上游操作符的所有实例都将数据发送给下游操作符的所有实例。洗牌阶段有大量流量。keyBy操作符位于(过滤器->映射)之后运算符,所以我想知道当大量数据被过滤时,为什么flink会在(过滤映射)之前而不是之后对数据集进行散列