首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >RDD和Dataset的不同默认持久化

RDD和Dataset的不同默认持久化
EN

Stack Overflow用户
提问于 2018-09-01 16:19:34
回答 2查看 1.5K关注 0票数 3

我试图找到一个很好的答案,为什么RDD的默认持久化是MEMORY_ONLY,而对于Dataset则是MEMORY_AND_DISK。但我找不到。

有人知道为什么默认的持久化级别不同吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-01 20:02:32

对于rdd,持久化api的默认存储级别是内存,数据集的默认存储级别是MEMORY_AND_DISK。

请检查以下内容

星星之火-3824组内存中表默认存储级别为MEMORY_AND_DISK

正如@user6910411所提到的,Spark目前使用MEMORY_ONLY作为默认格式。然而,由于使用了列缓冲区,不得不重新计算块要付出巨大的代价,“,即dataset/dataframe使用列缓冲区存储原始数据的列数据类型和列详细信息,因此,在缓存数据时不适合内存的情况下,它将不会缓存其余的分区,并且在发生dataset/dataframe的情况下,无论何时needed.So都会重新计算,与rdd相比,由于其柱状structure.So,默认的持久化选项改为MEMORY_AND_DISK,这样,不适合内存的块就会溢出到磁盘中,并在需要时从磁盘检索,而不是下次重新计算。

票数 0
EN

Stack Overflow用户

发布于 2018-09-01 17:03:08

仅仅因为MEMORY_ONLY很少有用--在实践中,没有足够的内存来存储所有所需的数据,所以您通常只需要部分地排除一些块或缓存数据。

与此相比,DISK_AND_MEMORY将数据驱逐到磁盘,因此不会丢失缓存块。

选择MEMORY_AND_DISK作为默认缓存模式的确切原因是,火花-3824 (Spark默认情况下应该在MEMORY_AND_DISK中缓存):

Spark当前使用MEMORY_ONLY作为默认格式。然而,由于使用了列缓冲区,因此必须重新计算块要花费很大的代价,这比Spark内核的成本要高得多。特别是现在我们对缓存块比较保守,有时不会缓存我们认为可能超过内存的块,默认情况下将持久化块保存在磁盘上似乎更好。

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

https://stackoverflow.com/questions/52130014

复制
相关文章

相似问题

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