算子并行度和全局并行度

在Flink中,有两种类型的并行度:算子并行度(Operator Parallelism)和全局并行度(Global Parallelism)。

  1. 算子并行度(Operator Parallelism):

    • 算子并行度指的是每个算子实例的并行度。在Flink中,每个算子(例如mapfilter等)都可以独立设置其并行度。这表示算子将会有多个并发的实例,每个实例处理输入数据的一个子集。你可以通过setParallelism方法来设置算子的并行度。
    java
    DataStream<T> stream = ...; stream.map(new MyMapFunction()).setParallelism(4);
  2. 全局并行度(Global Parallelism):

    • 全局并行度是整个应用程序中并行度的一个全局设置。你可以通过setParallelism方法在执行环境或数据流上设置全局并行度。这会影响到所有算子,除非某个算子显式设置了自己的并行度。
    java
    StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(3); DataStream<T> stream = ...; // 此处的 map 算子将会继承全局并行度,除非它自己显式设置了并行度 stream.map(new MyMapFunction());

总体而言,全局并行度是整个应用程序的默认并行度,而算子并行度是对某个具体算子的设置。算子并行度可以覆盖全局并行度,如果某个算子设置了独立的并行度,它将以自己的并行度为准。

posted @ 2024-03-12 14:47  guoyu1  阅读(7)  评论(0编辑  收藏  举报