pyspark.RDD.persist ¶
-
RDD.
persist
( storageLevel : pyspark.storagelevel.StorageLevel = StorageLevel(False, True, False, False, 1) ) → pyspark.rdd.RDD [ T ] [source] ¶ -
将此RDD的存储级别设置为在第一次计算后跨操作持久化其值。这只能在RDD尚未设置存储级别时用于分配新的存储级别。如果没有指定存储级别,默认值为( MEMORY_ONLY )。
新增于版本 0.9.1。
- Parameters
-
-
storageLevel
StorageLevel
, default MEMORY_ONLY -
目标存储级别
-
storageLevel
- Returns
示例
>>> rdd = sc.parallelize(["b", "a", "c"]) >>> rdd.persist().is_cached True >>> str(rdd.getStorageLevel()) 'Memory Serialized 1x Replicated' >>> _ = rdd.unpersist() >>> rdd.is_cached False
>>> from pyspark import StorageLevel >>> rdd2 = sc.range(5) >>> _ = rdd2.persist(StorageLevel.MEMORY_AND_DISK) >>> rdd2.is_cached True >>> str(rdd2.getStorageLevel()) 'Disk Memory Serialized 1x Replicated'
无法覆盖现有的存储级别
>>> _ = rdd2.persist(StorageLevel.MEMORY_ONLY_2) Traceback (most recent call last): ... py4j.protocol.Py4JJavaError: ...
在 unpersist 之后分配另一个存储级别
>>> _ = rdd2.unpersist() >>> rdd2.is_cached False >>> _ = rdd2.persist(StorageLevel.MEMORY_ONLY_2) >>> str(rdd2.getStorageLevel()) 'Memory Serialized 2x Replicated' >>> rdd2.is_cached True >>> _ = rdd2.unpersist()