Spark 任务调度图(以Spark Core为例)
1. DAG的应用
Spark的Job(Application),从宏观上来看处理过程大致如下:
- 加载数据,获取RDD(或DF等)
- 转换数据
- 执行转换,获取结果并处理
整个计算过程是从上往下的(有方向),但是没有上下往复的处理(无循环),从图的角度我们可以将这个过程抽象为一个【DAG】(Directed Acyclic Graph)。
数据处理过程中的各个步骤(如filter、map、reduce等)是连续的,每个步骤处理的输入数据集我们称为“父数据集”,本步骤处理后的输出数据集我们成为“子数据集”,这两个数据集我们称它们之间有依赖关系(父数据集经过加工得到子数据集)。如果父数据集中的数据分散到了N多(N>1)个子数据集中,我们称这种依赖关系为【宽依赖】,否则为【窄依赖】。