如果有多个下游操作符,flink会发送重复的记录吗

ff29svar  于 2021-06-21  发布在  Flink
关注(0)|答案(2)|浏览(463)

如果我运行一个示例flink应用程序,如下所示:

DataStream ds;
ds.map(new MapFunction1()).print();
ds.map(new MapFunction2()).print();

flink是否会在内部将ds中的每条记录发送两次给下游操作员(mapfunction1和mapfunction2)?
我知道flink中的数据交换是在taskmanager级别进行的,而不是在操作员级别。

pjngdqdw

pjngdqdw1#

是,请尝试:

StreamExecutionEnvironment environment =
            StreamExecutionEnvironment.getExecutionEnvironment();

    DataStream<Long> someIntegers = environment.generateSequence(0, 0);
    someIntegers.map(aLong -> aLong + 1).print();
    someIntegers.map(aLong -> aLong + 2).print();

    environment.execute();

输出:

1> 1
1> 2
w6mmgewl

w6mmgewl2#

此应用程序的作业图如下所示,整个应用程序在一个taskmanager中的单个线程中运行。我禁用了操作符链接来让FlinkWebUI生成这个图,但是如果我没有这样做的话,就不会涉及到任何网络。

相关问题