前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[Spark Q&A]如果中间输出RDD在内存放不下会怎么样?

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

作者头像
codingforfun
发布2018-08-24 14:57:29
7190
发布2018-08-24 14:57:29
举报

问:

如果我的中间输出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 目录


本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016.04.24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问:
  • 答:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档