apacheflink使用类似于apachespark的dag风格的延迟处理模型(如果我错了,请纠正我)。也就是说,如果我使用下面的代码
DataStream<Element> data = ...;
DataStream<Element> res = data.filter(...).keyBy(...).timeWindow(...).apply(...);
``` `.keyBy()` 皈依者 `DataStream` 至 `KeyedStream` 并将其分配给flink工作节点。
我的问题是,Flink怎么处理 `filter` 在这里?将筛选器应用于传入 `DataStream` 在划分/分配流和 `DataStream` 将只创建 `Element` 是否通过筛选条件?
2条答案
按热度按时间pdtvr36n1#
据我所知
filter
在keyBy
. 正如你所说的,它是一个dag(d==定向的)。你有没有看到任何迹象表明情况并非如此?c86crjj02#
在对数据流进行分区/分发之前,是否将筛选应用于传入的数据流,并且仅创建通过筛选条件的元素的数据流?
是的,没错。我唯一可以说不同的是,澄清原始流
data
通常已经从源分发(并行)。过滤将在多个任务中并行应用,之后keyby将在worker中重新编写/重新分配流。您可以使用flink的webui检查作业生成的执行图的可视化。