概念
1. job定义
我们都知道,在spark rdd中,有action、transform操作,当真正触发action时,才真正执行计算,此时产生一个job任务。
2. stage定义:
以shuffle为界,当在一个job任务中涉及shuffle操作时,会进行stage划分,产生一个或多个stage。
3. task定义:
4. partition定义:
partition个数即rdd的分区数,不同的数据源读进来的数据分区数默认不同,可以通过repartition进行重分区操作。
5. executor定义:
executor运行在work上,一个work可以运行一个或多个executor,一个executor可以运行一个或者多个task(取决于executor的core个数,默认是一个task占用一个core,即有多少个core就可以启动多少个task任务)
6. 各个之间的关系图:
一个work有一个或多个executor
一个executor有一个或者多个task(取决于executor的core个数)
一个task对应一个partition分区,即并行度(官网推荐partition分区数设置是task个数的2~3倍,充分利用资源)
一个stage有一个或多个task任务
一个job有一个或多个stage