Level Space used CPU time In memory On disk Serialized
-------------------------------------------------------------------------
MEMORY_ONLY High Low Y N N
MEMORY_ONLY_SER Low High Y N Y
MEMORY_AND_DISK High Medium Some Some Some
MEMORY_AND_DISK_SER Low High Some Some Y
DISK_ONLY Low High N Y Y
2条答案
按热度按时间ikfrs5lh1#
正如文档中所解释的,效率方面的持久性级别:
字符串
MEMORY_AND_DISK
和MEMORY_AND_DISK_SER
溢出到磁盘,如果有太多的数据,以适应内存。eoxn13cs2#
文件上说-
存储级别
意义
仅限内存
将RDD作为Java对象存储在JVM中。如果RDD不适合内存,则某些分区将不会被缓存,并且将在每次需要时动态重新计算。这是默认级别。
内存和磁盘
将RDD作为Java对象存储在JVM中。如果RDD不适合内存,则将不适合磁盘的分区存储起来,并在需要时从磁盘读取它们。
MEMORY_ONLY_SER
将RDD存储为序列化的Java对象(每个分区一个字节数组)。这通常比序列化的对象更节省空间,特别是在使用快速序列化器时,但读取时更占用CPU。
存储器和磁盘服务器
类似于MEMORY_ONLY_SER,但是将不适合内存的分区溢出到磁盘,而不是在每次需要时动态地重新计算它们。
仅限磁盘
只将RDD分区存储在磁盘上。
MEMORY_ONLY_2、MEMORY_AND_DISK_2等
与上面的级别相同,但是在两个集群节点上复制每个分区。
OFF_HEAP(实验)
将RDD以序列化格式存储在Tachyon中。与MEMORY_ONLY_SER相比,OFF_HEAP减少了垃圾收集开销,并允许执行器更小并共享内存池,这使得它在具有大型堆或多个并发应用程序的环境中具有吸引力。此外,由于RDD驻留在Tachyon中,执行器的崩溃不会导致丢失内存中的缓存。在此模式下,Tachyon中的内存是可重命名的。2因此,Tachyon不会尝试重新构建它从内存中驱逐的块。
这意味着对于Memory ONLY,spark将尝试始终将分区保留在内存中。如果某些分区无法保留在内存中,或者由于节点丢失而将某些分区从RAM中删除,spark将使用沿袭信息重新计算。在内存和磁盘级别,spark将始终保持分区计算和缓存。它将尝试保留在RAM中,但如果它不适合,则分区将溢出到磁盘。