文章目录
下面是三个函数的详细介绍以及它们之间的对比:
-
cache()
cache()
是persist()
的一种特殊形式,使用cache()方法,默认的存储级别是MEMORY_ONLY
。这意味着RDD的数据会被存储在节点的内存中。如果内存空间不足以容纳所有数据,则部分未能存入缓存的数据将在需要的时候重新计算,而不是被保存到磁盘上。对于MEMORY_AND_DISK
这个存储级别,如果内存空间不足以容纳所有数据,那么溢出的部分数据会被保存到磁盘上,这可以通过persist(StorageLevel.MEMORY_AND_DISK)
来实现。- 当RDD的数据被计算后,它将保持在节点内存中,从而在后续操作中可以快速访问。
- 不会切断RDD的依赖关系。
-
persist(storageLevel: StorageLevel)
persist()
允许用户选择不同的存储级别(包括MEMORY_ONLY
,MEMORY_AND_DISK
,MEMORY_ONLY_SER
等)。- 与
cache()
类