Apache Flink使用类似于Apache Spark的DAG风格的延迟处理模型(如果我错了,请纠正我(。话虽如此,如果我使用以下代码
DataStream<Element> data = ...;
DataStream<Element> res = data.filter(...).keyBy(...).timeWindow(...).apply(...);
CCD_ 1将CCD_ 2转换为CCD_。
我的问题是,在这里,flink将如何处理filter
?在划分/分发流之前,是否会将filter应用于传入的DataStream
,而DataStream
将仅由通过filter条件的Element
创建?
在对流进行分区/分发之前,是否会对传入的DataStream应用筛选器,并且只会为通过筛选器条件的Element创建DataStream?
是的,没错。我可能会说的唯一不同的是澄清原始流data
通常已经从源分发(并行(。过滤将在多个任务中并行应用,之后keyBy将在工作者之间重新分配/重新分发流。
您可以使用Flink的web UI来检查作业生成的执行图的可视化。
根据我的理解,filter
应用于.keyBy()
0之前。正如你所说的,这是一个DAG(D==定向(。你有没有看到任何指标告诉你情况并非如此?