- MEMORY_AND_DISK
使用rdd.persist(StorageLevel.MEMORY_AND_DISK)代替rdd.cache() - 降低cache操作的內存佔比
- 增加每個executor的內存量
- 使用kero序列化機制減少內存佔用
- 避免使用partitions算子
- 數據傾斜,可能會導致每個task數據量太大,內存溢出
- 算子導致的內存溢出
例如下列map算子,每條記錄都產生了1000個對象,這肯定很容易產生內存溢出的問題
rdd.map(x=>for(i <- 1 to 10000) yield i.toString