1. 数据序列化
a. 使用Kryo序列化
conf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
2. 内存调整
a. 如何确定对象的内存使用情况
spark.memory.fraction = 0.6 // 表示60%的空间为执行内存,剩下的40%为存储内存
spark.memory.storageFraction // 当执行内存抢占存储内存时,存储内存的最低保留比例
b. 如何通过更改数据结构或以序列化格式存储数据来改进它
c. 调整Spark的缓存大小和Java垃圾收集器
Ref: http://spark.apache.org/docs/2.3.0/tuning.html#data-serialization