首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何判断RDD是否会加载到ram中?

如何判断RDD是否会加载到ram中?
EN

Stack Overflow用户
提问于 2015-03-05 23:07:07
回答 1查看 484关注 0票数 1

下面是http://www.eecs.berkeley.edu/Pubs/TechRpts/2014/EECS-2014-12.pdf的一个示例。

代码语言:javascript
运行
复制
lines = spark.textFile("hdfs://...")
errors = lines.filter(_.startsWith("ERROR"))
errors.persist()

论文系统:“注意到基本的RDD (行)没有加载到内存中,这是可取的,因为错误消息可能只是数据的一小部分(小到足以容纳内存)”。

我的问题是如何判断RDD是否会加载到ram中?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-06 07:56:11

你的问题不对。如果您告诉引擎这样做,RDD将被加载到RAM中,引擎不会抱怨您的代码。为了使它只需将RDD标记为用cache()persist()缓存,然后调用它上的一个操作--它将被缓存。

正确的一个是“如何判断是否缓存RDD?”。在以下情况下,应该缓存RDD:

  1. 您计划在此数据之上运行一系列操作。
  2. 重新计算这些数据是很昂贵的。这可能是一些密集的计算,连接等的结果。

如果重新计算数据真的很昂贵,您可能会考虑不仅在内存中,而且使用MEMORY_AND_DISK持久化级别--这样即使您没有足够的内存而不是删除RDD分区并稍后重新计算它们,引擎也会将它们放到RDD上。此外,您还可以考虑将数据持久化到存储在本例中,例如使用saveAsSequenceFile()

在这个特定的例子中,lines RDD没有被缓存,因为它只使用过一次,它很大,并且可以很容易地从存储中重新读取。虽然errors RDD是计算出来的,而且很小,而且在将来他们计划在上面运行一系列的操作,所以缓存它是很好的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28889580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档