Spark作业的Job与Stage数量咨询:我的理解是否正确?
你的理解不完全正确,具体细节拆解如下:
Job数量:只有1个
Spark里只有触发Action的操作才会生成Job,读取CSV属于懒加载的Transformation(不会立即执行),不会单独触发Job。你的作业里只有最后的「写入CSV」是Action操作,所以整个流程只会生成1个Job,而非你认为的3个。
Stage数量:共4个
Stage是根据Shuffle(宽依赖)划分的,你的流程里有两处核心Shuffle节点,对应多组Stage:
- 非广播Join阶段:因为是非广播的Shuffle Join,两个CSV读取后都需要按Join Key做Shuffle分区,这会形成两个并行的前置Stage(分别处理两个文件的读取、解析和Shuffle写入)
- Group By阶段:GroupBy本身需要按分组Key做Shuffle,这会在Join之后生成两个Stage:一个是完成Join后执行Map端聚合并输出Shuffle,另一个是读取Shuffle结果完成Reduce端聚合,最终写入CSV
简单来说,你的作业会拆分为4个Stage,而非你认为的2个。
内容的提问来源于stack exchange,提问作者user16798185
相关产品推荐
相关产品推荐

