1.RDD的cache和persist
- cache:存储级别是MEMORY_ONLY的, 是个transformation,是lazy的,只有触发了action,才会真正执行(spark sql中的cache是立刻执行的)
- persist:可以指定存储级别
- spark使用lru算法移除过期的cache数据,用户也可以手动取消序列化:unpersist(立即执行,不是lazy的)
2.存储级别StorageLevel
(1)存储级别有哪些?
(2) 如何选择存储级别
存储方式 | 描述 | 资源占用 | 适用场景 |
MEMORY_ONLY | 内存,反序列化 | 内存占用大 | 内存资源充足(默认推荐) |
MEMORY_ONLY_SER | 内存,序列化 | 节省内存,单耗费cpu | 内存资源不充足 |
磁盘 | 溢写到磁盘 | 占磁盘,速度慢 | 内存放不下(不推荐) |
官网的描述: