个人认为,要想学习好spark,对于spark的RDD的理解是最重要的,如果对于RDD理解不够透彻,那么后面的学习都是不牢固的,这里推荐下掘金里面这个博主写的文章,非常好,通读一遍,基本对于RDD有了个比较清晰的概念
一文带你过完Spark RDD的基础概念 - 掘金上一篇权当吹水了,从这篇开始进入正题。 RDD(Resilient Distributed Dataset)叫做 弹性分布式数据集 ,是Spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合. 一个分区(Partition)列表,组成了该RDD的数据…https://juejin.cn/post/6844904061926391822那么,接下继续理解,标题中的三个名字在spark应用中的意义:
Job
当在spark程序中遇到一个action算子的时候,就会提交一个job,执行前面的一系列操作。通常一个任务会有多个job,job之间是按照串行的方式执行的。一个job执行完成后,才会起下一个job。
Stage
一个job通常包含多个stage。各个stage之间按照顺序执行。job中stage的划分就是根据shuffle依赖进行的。shuffle依赖是两个stage的分界点。
Task
一个spark application提交后,陆续被分解为job,stage,到这里其实还是一个比较粗的概念。stage继续往下分解,就是Task。Task应该是spark最细的执行单元了。Task的数量其实就是stage的并行度。Rdd在计算的时候,每个分区都会起一个task,所有rdd的分区数目决定了总的task数目。每个Task执行的结果就是生成了一个目标RDD的一个partition。