Spark_分区、任务等概念学习

Spark_分区、任务等概念学习

Spark的Driver、Job和Stage

csdn jwLee

例子说明

在这个例子中,假设你需要做如下一些事情:

将一个包含人名和地址的文件加载到RDD1中
将一个包含人名和电话的文件加载到RDD2中
通过name来Join RDD1和RDD2,生成RDD3
在RDD3上做Map,给每个人生成一个HTML展示卡作为RDD4
将RDD4保存到文件
在RDD1上做Map,从每个地址中提取邮编,结果生成RDD5
在RDD5上做聚合,计算出每个邮编地区中生活的人数,结果生成RDD6
Collect RDD6,并且将这些统计结果输出到stdout
在这里插入图片描述
其中红色虚线表示输入和输出,蓝色实线是对RDD的操作,圆圈中的数字对应了以上的8个步骤。接下来解释driver program, job和stage这几个概念:

  • Driver program是全部的代码,运行所有的8个步骤。
  • 第五步中的save和第八步中的collect都是Spark Job。Spark中每个action对应着一个Job,transformation不是Job
  • 其他的步骤(1、2、3、4、6、7)被Spark组织成stages,每个job则是一些stage序列的结果。对于一些简单的场景,一个job可以只有一个stage。但是对于数据重分区的需求(比如第三步中的join),或者任何破坏数据局域性的事件,通常会导致更多的stage。可以将stage看作是能够产生中间结果的计算。这种计算可以被持久化,比如可以把RDD1持久化来避免重复计算。
  • 以上全部三个概念解释了某个算法被拆分的逻辑。相比之下,task是一个特定的数据片段,在给定的executor上,它可以跨越某个特定的stage。

到了这里,很多概念就清楚了。驱动程序就是执行了一个Spark Application的main函数和创建Spark Context的进程,它包含了这个application的全部代码。Spark Application中的每个action会被Spark作为Job进行调度。每个Job是一个计算序列的最终结果,而这个序列中能够产生中间结果的计算就是一个stage。

通常Action对应了Job,而Transformation对应了Stage

参考这篇文章
https://blog.csdn.net/sandra_csdn/article/details/78110622?utm_source=app

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值