概念

1. job定义

我们都知道,在spark rdd中,有action、transform操作,当真正触发action时,才真正执行计算,此时产生一个job任务。

2. stage定义:

以shuffle为界,当在一个job任务中涉及shuffle操作时,会进行stage划分,产生一个或多个stage。

3. task定义:

  一个stage可能包含一个或者多个task任务,task任务与partition、executor息息相关,即并行度。

4. partition定义:

partition个数即rdd的分区数,不同的数据源读进来的数据分区数默认不同,可以通过repartition进行重分区操作。

5. executor定义:

executor运行在work上,一个work可以运行一个或多个executor,一个executor可以运行一个或者多个task(取决于executor的core个数,默认是一个task占用一个core,即有多少个core就可以启动多少个task任务)

6. 各个之间的关系图:

spark中job、stage、task、partition、executor等概念理解_官网

一个work有一个或多个executor
一个executor有一个或者多个task(取决于executor的core个数)
一个task对应一个partition分区,即并行度(官网推荐partition分区数设置是task个数的2~3倍,充分利用资源)
一个stage有一个或多个task任务
一个job有一个或多个stage