了解Flink中的任务和子任务

时间:2019-01-26 02:18:29

标签: apache-flink

我是Flink的新手,对Task和SubTask感到困惑。

在我看来

  1. 任务等效于Spark中的TaskSet或Stage

  2. SubTask等同于Spark中的Task

如果我理解正确,那么下面给出一个简单的例子, 将是1个任务和4个子任务?

object TaskAndSubTaskTest {
  def main(args: Array[String]): Unit = {
    val benv = ExecutionEnvironment.getExecutionEnvironment
    benv.fromCollection(1 to 20).map(_ * 3).filter(_ > 50).setParallelism(4).print()
  }
}

1 个答案:

答案 0 :(得分:0)

在概念和代码上,任务和子任务的设计和实现也最糟糕。 subtask是线程运行的最小工作单元,但是在Flink源代码中,没有名为Subtask或类似名称的类。有线的是,有一个名为Task的类实现Runanble,这意味着Task是将在线程中运行的单元。

Flink中的任务更像TaskSet或Spark中的Stage,而Flink中的子任务更像Spark中的Task