大数据面试与架构调优 RDD On Spark篇

(map 、 mappartition)(transformation) 、(foreach、foreachprtition )(action类型算子)

1: map 是作用到RDD每个元素都遍历下,如果是持久化数据需要创建连接,就会创建很多连接。

2:mappartition 是作用到每个分区遍历一次,相对map更加合理,但是有可能单个partition过大

会导致资源不被释放,这个时候莫慌指定partition数量即可。

3: foreach 同上就是算子类型不一样

4: foreachpartition 同上就是算子类型不一样

 

 groupByKey 与 reduceByKey

1:算子都适用于Transformation类型算子,都会产生Shuffle (调优可以缓存产生Shuffle的数据),groupByKey不会在RDD局部聚合产生的数据也是CompactBuffer,reduceByKey在RDD先局部聚合在全局聚合。

2:groupByKey 比 reduceByKey shuffer数据大小要大,所以进来选择reduceByKey。

大数据面试与架构调优 RDD On Spark篇

 

colleat(action算子)

1: 会把结果加载到内存里 慎用,产生OOM

2:如果一定想看看colleat().take(100) 来看看得了,或者直接用saveAsTextFile("hdfs://......")再看。

 

coalesce 与 repartition的有区别

1:coalesce 可以根据传入的分区数 把已有的分区数压缩并且不产生shuffer,如果增加分区数参数二传递true就会产生shuffer。

2: repartition 底层默认调用coalesce 默认传递true,所以会传输shuffer

 

cache 与 persist的区别

1:cache 默认调用了 persist,persist默认调用了persist(MEMORY_ONLY)

 

 

 

spark 执行流程

https://blog.****.net/lucklilili/article/details/99460391

 

Spark 划分stage原理

 

大数据面试与架构调优 RDD On Spark篇

Spark RDD生成到task提交的四个阶段

 

大数据面试与架构调优 RDD On Spark篇