首页 > 解决方案 > 如果下游有多个operator,flink会发送重复记录吗

问题描述

如果我运行如下示例 flink 应用程序:

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

flink 会在内部为每个记录从ds发送两次到下游操作符(MapFunction1 和 MapFunction2)吗?

我知道 flink 中的数据交换发生在任务管理器级别而不是操作员级别。

标签: javaapache-flink

解决方案


是的,试试:

    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

推荐阅读