2-Spark-1-性能调优-数据倾斜2-Join/Broadcast的使用场景

Posted ywdjx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2-Spark-1-性能调优-数据倾斜2-Join/Broadcast的使用场景相关的知识,希望对你有一定的参考价值。

技术点:RDD的join操作可能产生数据倾斜,当两个RDD不是非常大的情况下,可以通过Broadcast的方式在reduce端进行类似(Join)的操作:

  broadcast是进程级别的,只读的。

  broadcast 可以适用于小表的广播,通过广播到对应节点的内存中(受blockManager的管理),该节点的Rdd通过mapPartitions方法,并通过blockmanager获取到broadcast的内容,进行对相同的key进行(join)操作。

  map方法是将遍历rdd的每个partitions中的每条记录,mapPartitions是遍历到rdd的每个Partitions,相当是基于一个数组(相当于每个partition的缓存)进行批量操作。

适用场景:这种通过Broadcast广播的方式适用于小表,不适用于RDD的数据量非常大的情况,可能会导致OOM,并且对于Gc也是一个比较大的负担(broadcast的变量占用的内存,很容易就会成为Jvm中老年代的成员,且占用较大)。

 

以上是关于2-Spark-1-性能调优-数据倾斜2-Join/Broadcast的使用场景的主要内容,如果未能解决你的问题,请参考以下文章

Spark性能优化--数据倾斜调优与shuffle调优

Spark性能调优——扩展篇

Spark性能调优之解决数据倾斜

spark性能调优指南——高级篇

Spark性能优化指南——高级篇

spark性能调优 数据倾斜 内存不足 oom解决办法