Spark物理执行计划生成方法

Spark物理执行计划生成方法

1 执行步骤

Spark分3步来生成物理执行计划首先根据action()操作顺序将应用分为job,然后根据每个job的逻辑处理流程中的ShuffleDependency依赖关系将job划分为stage,最后在每个stage中,根据最后生成的RDD的分区个数生成多个task。

2 相关问题

2.1 job、stage和task的计算顺序

job的提交时间与action()被调用的时间有关,当应用程序执行到rdd.action()时,就会立刻将rdd.action()形成的job提交给Spark。job的逻辑处理流程实际上是一个DAG图,经过stage划分后,仍然是DAG图形状,每个stage的输入要么是job的输入数据,要么是上游stage的输出结果。因此,计算顺序从包含输入数据的stage开始,从前到后依次执行,仅当上游的stage都执行完成后,在执行下游的stage。stage中的每个task都是独立而且同构的,可以并行,没有先后之分。

2.2 task内部数据的存储与计算问题(流水线问题)

窄依赖下,并且单条数据操作,可以使用流水线式操作

如果需要一次性读取多条数据后才能计算,“流水线”式计算退化到“计算-回收”模式,每执行完一个操作,回收之前的中间结果。

Spark采用“流水线”式计算来提高task的执行效率,减少内存使用量,这也是Spark可以在有限内存中处理大规模数据的原因。然而,对于某些需要聚合中间结果的操作,还需要占用一定的内存空间,也会在一定程度上影响流水线计算的效率。

2.3 task之间的数据传递和计算问题

Shuffle Write和Shuffle Read问题,取决于Shuffle方式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值