窄依赖:
父RDD与子RDD partion之间的关系是一对一、多对一。
宽依赖(有shuffle):
父RDD与子RDD partion之间的关系是一对多。

tips:相同的key肯定去同一个分区,但一个分区中可以有不同的key
术语

Appliction由job组成,有几个action算子就有几个job


Stage
- stage切割规则
切割规则:从后往前,遇到宽依赖就切割stage

Stage并行度由Stage中finalRDD的partition个数决定
上图由F决定,但是F后面的会起影响的作用
提高Stage的并行度:利用有shuffle的算子,比如reduceByKey(xxx,分区数[影响作用])、join(xxx,分区数)
Spark处理数据模式

落地管道中的数据:
1、shuffle write 溢写磁盘
2、对RDD进行持久化
代码测试
import org.apache.spark.SparkConf import org.apache.spark.SparkContext object spark执行 { /* * 按照mr的执行逻辑 * .....map~zha * .....map~long * .....map~xue * =====filter~zha * =====filter~long * =====filter~xue * 而按照spark的执行逻辑 * ......mapzha ===========filterzha~ ......maplong ===========filterlong~ ......mapxue ===========filterxue~ */ def main(args: Array[String]): Unit = { val conf = new SparkConf().setMaster("local").setAppName("test") val sc=new SparkContext(conf) val rdd1=sc.parallelize(Array("zha","long","xue")) val rdd2 = rdd1.map(name=>{ println("......map"+name) name+"~" }) val rdd3=rdd2.filter(name=>{ println("===========filter"+name) true }).collect() sc.stop() } }

挺明白的
奥利给
奥利给
我给你点赞了
我也是小白以后多多交流
good厉害了
好
记住这个网站了