[Spark Q&A]如果中间输出RDD在内存放不下会怎么样?

问:

如果我的中间输出RDD 数据大小是2G,但只有1G 的空闲内存,此时会怎么样?

答:

这个问题其实问的 RDD 缓存机制。我们可以调用 persist()cache()方法来缓存 RDD。Spark 的缓存是具有容错性的,如果 RDD 的任意 partition 丢失,将会自动重算。

依据你设置的 RDD 缓存的 Storage level 的不同,产生的行为也是不同的,如下:

  • MEMORY_ONLY: 调用 cache 和 persist 的默认值,会尽量多的将你的中间输出 RDD 的 partitions 放到内存,其余放不下的 partition 会在使用到的时候进行重算
  • MEMORY_AND_DISK: 会尽量多的将你的中间输出 RDD 的 partitions 放到内存,其余放不下的 partition 会放到磁盘
  • DISK_ONLY: 将所有 partitions 放到磁盘

还有一些 Storage level 无非是序列化或放两份,就不一一展开了。至于缓存 RDD 时需要用哪种 storage level,需要视具体情况而定,有些情况下重算比从磁盘加载还快;有些情况下,为了节省空间可能需要序列化等等


更多不容错过的 Spark Q&A: Spark Q&A 目录


本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏行者悟空

Spark DAG调度

1543
来自专栏个人分享

SparkStreaming(源码阅读十二)

  要完整去学习spark源码是一件非常不容易的事情,但是咱可以积少成多嘛~那么,Spark Streaming是怎么搞的呢?

1362
来自专栏Albert陈凯

Spark系列课程-00xxSpark RDD持久化

我们这节课讲一下RDD的持久化 ? RDD的持久化 这段代码我们上午已经看过了,有瑕疵大家看出来了吗? 有什么瑕疵啊? 大家是否还记得我在第二节课的时候跟大...

4128
来自专栏about云

让你真正明白spark streaming

spark streaming介绍 Spark streaming是Spark核心API的一个扩展,它对实时流式数据的处理具有可扩展性、高吞吐量、可容错性等...

3577
来自专栏Albert陈凯

Spark概要掌握情况自我核查

1、Spark目前只持哪哪种语言的API? Java, Scala, Python, R. Ref: http://spark.apache.org/ 2、R...

2643
来自专栏Linux驱动

STM32—无需中断来实现使用DMA接收串口数据

本节目标: 通过DMA,无需中断,接收不定时长的串口数据 描述: 当在串口多数据传输下,CPU会产生多次中断来接收串口数据,这样会大大地降低CPU效率,同时...

4495
来自专栏涂小刚的专栏

【Spark教程】核心概念RDD

RDD全称叫做弹性分布式数据集(Resilient Distributed Datasets),它是一种分布式的内存抽象,表示一个只读的记录分区的集合,它只能通...

2K0
来自专栏Jed的技术阶梯

Spark-RDD持久化

使用不同参数的组合构造的实例被预先定义为一些值,比如MEMORY_ONLY代表着不存入磁盘,存入内存,不使用堆外内存,不进行序列化,副本数为1,使用persis...

2313
来自专栏伦少的博客

Spark 持久化(cache和persist的区别)

4884
来自专栏个人分享

Spark作业调度

    Spark在任务提交时,主要存在于Driver和Executor的两个节点.

1991

扫码关注云+社区

领取腾讯云代金券