首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Spark如何清除缓存的分区?

Spark如何清除缓存的分区?
EN

Stack Overflow用户
提问于 2017-03-07 23:36:40
回答 2查看 5.8K关注 0票数 3

我以独立模式运行Spark2.0,我是集群中唯一一个提交作业的人。

假设我有一个RDD,它有100个分区,每次只有10个分区可以在内存中使用。

我们还假设分配的执行内存足够了,并且不会干扰存储内存。

假设我迭代了RDD中的数据。

代码语言:javascript
运行
复制
rdd.persist()  // MEMORY_ONLY

for (_ <- 0 until 10) {
  rdd.map(...).reduce(...)
}

rdd.unpersist()

对于每次迭代,前10个被持久化的分区会一直在内存中直到rdd.unpersist()

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-08 16:46:35

我想我找到了答案,所以我要回答我自己的问题。

驱逐策略似乎属于MemoryStore类。这是源代码

似乎没有将条目逐出,以便在同一个RDD中为条目腾出位置。

票数 2
EN

Stack Overflow用户

发布于 2017-03-08 00:36:38

现在,我所知道的是,Spark正在使用LRU (最近使用的较少)驱逐策略作为RDD分区的默认设置。他们正在努力增加新的战略。https://issues.apache.org/jira/browse/SPARK-14289

此策略移除最近使用较少的元素,在将元素放入缓存或从缓存中检索元素时更新上一次使用的时间戳。

我想您的内存中总是有10个分区,但是哪些分区存储在内存中,哪些分区将被逐出取决于它们的使用。根据Apache FAQ

同样,不适合内存的缓存数据集或者溢出到磁盘,或者在需要时动态重新计算,这是由RDD的存储级别决定的。

因此,如果其他分区溢出到磁盘或动态重新计算,则取决于您的配置。默认情况下,重新计算并不总是最有效的选项。您可以将数据集的存储级别设置为MEMORY_AND_DISK,以避免这种情况。

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

https://stackoverflow.com/questions/42660385

复制
相关文章

相似问题

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