隔板前的Flink过滤器


0

apacheflink使用类似于apachespark的DAG风格的延迟处理模型(如果我错了,请纠正我)。也就是说,如果我使用下面的代码

DataStream<Element> data = ...;
DataStream<Element> res = data.filter(...).keyBy(...).timeWindow(...).apply(...);

.keyBy()将数据流 transformation为KeyedStream,并将其分发到Flink worker节点中。

我的问题是,flink如何处理过滤器?在对流进行分区/分发之前,是否会对传入的数据流应用筛选器,并且只会为通过筛选条件的元素创建数据流?

2 答案


0
在对流进行分区/分发之前,是否会对传入的数据流应用筛选器,并且只会为通过筛选条件的元素创建数据流?

是的,没错。我想说的唯一不同的地方是澄清原始流数据通常已经从源(并行)分布。过滤将在多个任务之间并行应用,之后keyBy将在worker之间重新编写/重新分发流。

您可以使用Flink的web UI来检查从您的 job生成的执行图的可视化。


0

据我所知,过滤器是在keyBy之前应用的。正如你所说的,它是一个DAG(D==Directed)。你有没有看到任何迹象表明情况并非如此?


我来回答

写文章

提问题

面试题