Spark 中的 RDD 持久化
RDD Persistence in Spark
我有一个关于 RDD
何时存储在内存中的问题。
假设我有这段代码:
val dataset = originalDataset
.flatMap(data => modifyDatasetFormat(data, mappingsInMap))
.persist(StorageLevel.MEMORY_AND_DISK)
到目前为止,我有一个 RDD
存储在每个工作节点的内存中。
问题:
如果我对这个 RDD
进行另一个转换或操作,这个持久性是否会停止存在,我应该创建另一个或者它与它没有任何关系?
如果我更改此 RDD
中的分区(e.x 散列分区),这种持久性是否会停止存在,我应该创建另一个,或者它与它没有任何关系?
谢谢
If i do another transformation or action to this rdd, will this persistance stop exist
没有
If i change partitions in this rdd (e.x hash partitions) will this persistance stop exist
没有
转换(包括重新分区)无法更改现有的 RDD,尤其是它们无法取消持久化。当然
转换的结果本身不会持久化;
(不正确,正如 Jem Tucker 的评论中指出的那样)您需要转换持久化 RDD,而不是您调用 persist
的那个。即
val dataset1 = originalDataset.
flatMap(data => modifyDatasetFormat(data, mappingsInMap))
dataset1.persist(StorageLevel.MEMORY_AND_DISK)
val dataset3 = dataset1.map(...)
将重新计算 dataset1
。相反,你需要
val dataset2 = dataset1.persist(StorageLevel.MEMORY_AND_DISK)
val dataset3 = dataset2.map(...)
我有一个关于 RDD
何时存储在内存中的问题。
假设我有这段代码:
val dataset = originalDataset
.flatMap(data => modifyDatasetFormat(data, mappingsInMap))
.persist(StorageLevel.MEMORY_AND_DISK)
到目前为止,我有一个 RDD
存储在每个工作节点的内存中。
问题:
如果我对这个 RDD
进行另一个转换或操作,这个持久性是否会停止存在,我应该创建另一个或者它与它没有任何关系?
如果我更改此 RDD
中的分区(e.x 散列分区),这种持久性是否会停止存在,我应该创建另一个,或者它与它没有任何关系?
谢谢
If i do another transformation or action to this rdd, will this persistance stop exist
没有
If i change partitions in this rdd (e.x hash partitions) will this persistance stop exist
没有
转换(包括重新分区)无法更改现有的 RDD,尤其是它们无法取消持久化。当然
转换的结果本身不会持久化;
(不正确,正如 Jem Tucker 的评论中指出的那样)
您需要转换持久化 RDD,而不是您调用即persist
的那个。val dataset1 = originalDataset. flatMap(data => modifyDatasetFormat(data, mappingsInMap)) dataset1.persist(StorageLevel.MEMORY_AND_DISK) val dataset3 = dataset1.map(...)
将重新计算
dataset1
。相反,你需要val dataset2 = dataset1.persist(StorageLevel.MEMORY_AND_DISK) val dataset3 = dataset2.map(...)