将火花代码分配到工作,阶段和任务中

时间:2017-08-29 07:54:52

标签: apache-spark apache-spark-sql spark-dataframe

根据我的理解,整个工作中的每个动作都被转换为工作,工作中的每个洗牌阶段都被转换为阶段,每个阶段输入的每个分区都被转换为任务。

如果我错了,请纠正我,我无法得到任何实际定义。

1 个答案:

答案 0 :(得分:1)

在Spark应用程序中调用一个动作会触发一个Spark作业的启动来实现它.Spark会检查DAG并制定一个执行计划。执行计划包括将作业的转换组装成各个阶段。

当Spark在内部优化代码时,它会将其分成几个阶段,其中 每个阶段都包含许多小任务。每个阶段都包含一系列转换,可以在不重新填充完整数据的情况下完成。

给定阶段的每个任务都是由完全相同的单线程计算原子组成的 代码,仅适用于不同的数据集。任务数量由分区数决定。 为了管理作业流程和计划任务,Spark依赖于活动的驱动程序进程。 执行程序进程负责以任务的形式执行此工作,以及存储用户选择缓存的任何数据 单个执行程序有许多用于运行任务的插槽,并将在其整个生命周期内同时运行许多插槽。