我试图了解 Flinks Collector.collect() 的作用以及它如何处理传入/传出数据:
取自 Flink DataSet API 的示例:
以下代码将文本行的 DataSet 转换为单词的 DataSet:
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);
}
}
}
因此,文本 Lines 被拆分为标记,每个标记都被“收集”。听起来很直观,但我错过了 Collector.collect() 背后的实际动态。收集到的数据在分配给输出之前存储在哪里,即 Flink 是否将它们放入某种 Buffer 中?如果是,数据如何传输到网络?