有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如果存在多个下游操作符,java不会发送重复记录

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

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

flink会在内部为ds中的每条记录发送两次给下游操作员(MapFunction1和MapFunction2)吗

我知道flink中的数据交换发生在taskmanager级别,而不是操作员级别


共 (2) 个答案

  1. # 1 楼答案

    此应用程序的作业图如下所示,整个应用程序在一个taskmanager中的单个线程中运行。我禁用了操作符链接以使Flink webui生成此图,但如果我没有这样做,就根本没有网络参与

    enter image description here

  2. # 2 楼答案

    是的,试试:

        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