美文网首页
Spark-缓存

Spark-缓存

作者: 布莱安托 | 来源:发表于2020-07-06 19:56 被阅读0次

RDD通过persist方法或cache方法可以将前面得计算结果进行缓存,默认情况下persist会将数据序列化后缓存在JVM的堆中。

但并不是调用方法后立刻缓存,而是触发action算子是,该RDD会被缓存在Executor的内存中,供后续使用。

/**
 * Persist this RDD with the default storage level (`MEMORY_ONLY`).
 */
def persist(): this.type = persist(StorageLevel.MEMORY_ONLY)

/**
 * Persist this RDD with the default storage level (`MEMORY_ONLY`).
 */
def cache(): this.type = persist()

通过查看源码我们发现,cache方法实际也是调用了persist方法,只是默认设置存储级别为只存在内存中。

我们同样可以指定存储级别来指定缓存位置,存储级别定义在StorageLevel中,常用的级别定义有:

object StorageLevel {
  // 不缓存
  val NONE = new StorageLevel(false, false, false, false)
  // 只存磁盘
  val DISK_ONLY = new StorageLevel(true, false, false, false)
  val DISK_ONLY_2 = new StorageLevel(true, false, false, false, 2)
  // 只存内存
  val MEMORY_ONLY = new StorageLevel(false, true, false, true)
  val MEMORY_ONLY_2 = new StorageLevel(false, true, false, true, 2)
  // 只存内存并序列化
  val MEMORY_ONLY_SER = new StorageLevel(false, true, false, false)
  val MEMORY_ONLY_SER_2 = new StorageLevel(false, true, false, false, 2)
  // 存内存和磁盘,当内存空间不足时,将缓存存储在磁盘上
  val MEMORY_AND_DISK = new StorageLevel(true, true, false, true)
  val MEMORY_AND_DISK_2 = new StorageLevel(true, true, false, true, 2)
  // 存内存和磁盘并序列化
  val MEMORY_AND_DISK_SER = new StorageLevel(true, true, false, false)
  val MEMORY_AND_DISK_SER_2 = new StorageLevel(true, true, false, false, 2)
  // 存储在堆外内存
  val OFF_HEAP = new StorageLevel(true, true, true, false, 1)

其中带有_2后缀的表示缓存的副本数量为2,使得缓存数据更不容易丢失。

缓存可能丢失,或者由于内存不足而被回收,缓存丢失后也可以通过RDD的血缘关系进行重新计算。由于RDD的各个分区是独立的,所以只需要重新计算丢失的那个分区数据即可。

相关文章

  • Spark-缓存

    RDD通过persist方法或cache方法可以将前面得计算结果进行缓存,默认情况下persist会将数据序列化后...

  • spark-天池O2O竞赛

    地址转移到 : spark-天池O2O竞赛

  • Hive 入门

    Hive官网 Hive概述 Hive 的底层执行引擎有 :MapReduce,Tez,Spark- Hive on...

  • Spark-

    之前一直用yomail,但是最近觉得youmail这家伙有点丑。然后自带的那个设置又打不开,一气之下改换成spar...

  • Spark- OutOfMemoryError

    java.lang.OutOfMemoryError: heap spacejava.lang.OutOfMemo...

  • Spark-前言

    主要内容说明 主要按以下3个大点进行说明,也符合进行操作过程种的步骤,读取数据-操作数据-分析保存数据.总结起来就...

  • Spark-特征抽取(TF-IDF)

    mac单机简单实现一个Spark-特征抽取(TF-IDF)。 TF-IDF原理: 词频TF(t,d)是某个词t在文...

  • spark-技术链接

    GBDT原理及利用GBDT构造新的特征-Python实现 https://blog.csdn.net/shine1...

  • Spark-运行模式

    Local模式 Local模式就是运行在一台计算机上的模式,通常用于在本地机器联系和测试,它可以通过如下方式设置M...

  • Spark-提交任务

    基本语法 参数说明 --class:应用启动类--master:指定Master地址,默认为Local--depl...

网友评论

      本文标题:Spark-缓存

      本文链接:https://www.haomeiwen.com/subject/qvbgqktx.html