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划分和数据交换的关键点,也是主要的性能优化切入点。

全部评论
不明觉厉
点赞 回复 分享
发布于 01-14 18:29 陕西

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务