Flinks Collector.collect()是如何处理数据的



我试图了解Flinks Collector.collect((的作用以及它如何处理传入/传出数据:

取自Flink数据集API的示例:

以下代码将文本行数据集转换为单词数据集:


DataSet<String> output = input.flatMap(new Tokenizer());
public class Tokenizer implements FlatMapFunction<String, String> {
@Override
public void flatMap(String value, Collector<String> out) {
for (String token : value.split("\W")) {
out.collect(token);
}
}
}

因此,文本行被分割成标记,并且它们中的每一个都得到";收集";。听起来很直观,但我忽略了Collector.collect((背后的实际动态。在将收集到的数据分配给输出之前,这些数据存储在哪里,即Flink是否将它们放在某种缓冲区中?如果是,数据是如何传输到网络的?

来自官方源代码文档。

收集一条记录并将其转发;"推";{@linkjava.util.Iterator}的对应项;"拉";中的数据

因此,它接收一个值并将一个或多个值存储到迭代器中。然后按到下一个操作员。但这是一个网络堆栈/缓冲区的问题。

相关内容

  • 没有找到相关文章

最新更新