Hadoop教程
HBase
Hive
Pig
Sqoop
Spark

RDD持久性

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(experimental) 它类似于MEMORY_ONLY_SER,但是将数据存储在堆外存储器中。必须启用堆外内存。

昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4