Spark教程

Spark RDD持久化

RDD Persistence

Spark 提供了一种便捷的方式来处理数据集,将其跨操作保存在内存中。在持久化 RDD 时,每个节点都将其计算的任何分区存储在内存中。现在,我们还可以在该数据集的其他任务中重用它们。
我们可以使用persist() 或cache() 方法来标记要持久化的RDD。 Spark 的缓存是容错的。在任何情况下,如果 RDD 的分区丢失,它将使用最初创建它的转换自动重新计算。
有用于存储持久化 RDD 的不同存储级别的可用性。通过将StorageLevel 对象(Scala、Java、Python)传递给persist() 来使用这些级别。但是,cache() 方法用于默认存储级别,即 StorageLevel.MEMORY_ONLY。
以下是一组存储级别:
存储级别 说明
MEMORY_ONLY 它将 RDD 作为反序列化的 Java 对象存储在 JVM 中。这是默认级别。如果 RDD 不适合内存,某些分区将不会在每次需要时缓存和重新计算。
MEMORY_AND_DISK 它将 RDD 作为反序列化的 Java 对象存储在 JVM 中。如果 RDD 不适合内存,则存储不适合磁盘的分区,并在需要时从那里读取。
MEMORY_ONLY_SER
(Java 和 Scala)
它将 RDD 存储为序列化的 Java 对象(即每个分区一字节数组)。这通常比反序列化对象更节省空间。
MEMORY_AND_DISK_SER
(Java 和 Scala)
它类似于 MEMORY_ONLY_SER,但将不适合内存的分区溢出到磁盘而不是重新计算它们。
DISK_ONLY 它只将 RDD 分区存储在磁盘上。
MEMORY_ONLY_2、MEMORY_AND_DISK_2 等 与上面的级别相同,但在两个集群节点上复制每个分区。
OFF_HEAP(实验性) 它类似于 MEMORY_ONLY_SER,但将数据存储在堆外内存中。必须启用堆外内存。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4