并行度调优

两种方法对操作的并行度进行调优。

1、数据混洗操作时,使用参数的方式为混洗后的RDD指定并行度
2、对已经有的RDD重新分区获取更多或更少的分区
repartition增加分区
coalesce() 减少分区

内存管理

内存的用途如下。

默认情况 60%存储RDD,20%存储混洗操作 20% 存储用户程序。

RDD存储

调用RDD的persist()或cache()方法时,这个RDD的分区会被存储到缓存区中。
spark会根据spark.storage.memoryFraction限制用来缓存的内存占整个JVM堆空间的比例大小,如果超出限制,旧的分区数据会被移除内存。

数据混洗与聚合的混存区

当进行数据混洗操作时,spark创造中间缓存来存储数据混洗的输出数据。会根据spark.shuffle.memoryFraction来限定。

用户代码

若用户代码中分配了大量的对象,那么降低RDD存储和数据混洗存储所占用的空间可以有效避免程序内存不足的情况。