pyspark中 job执行的流程
一个 spark-submit 提交的应用程序(Application)会触发多少个Job,完全取决于你的代码中包含了多少个 Action 操作。
下面我们来详细分解这个概念:
📊 核心概念:Action触发Job
在Spark的执行模型中,这是一个铁律:
- 转换(Transformation):如 map、filter、join,它们只定义计算逻辑,是“惰性”的,不会立即执行。
- 动作(Action):如 count()、collect()、saveAsTextFile()、show(),它们会触发一个作业(Job)的真正执行,目的是产出结果或输出。
每个Action触发一个独立的Job。 因此,你的代码里有几个Action,spark-submit 运行这个应用时就会生成几个Job。
首先Driver程序会解析我们的代码,形成RDD的计算图。
接着,DAGScheduler会根据宽依赖将计算图划分成不同的Stage,每个Stage内部是一系列可以并行执行的Task。
然后,TaskScheduler会与Cluster Manager协作,申请资源启动Executor,并将Task分发到各个Executor上执行。Executor执行Task,并将状态和结果返回给Driver。
整个过程,Shuffle是Stage划分和数据交换的关键点,也是主要的性能优化切入点。
文远知行公司福利 558人发布