首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么默认的持久化()会将数据作为非序列化对象存储在JVM堆中?

问为什么默认的持久化()会将数据作为非序列化对象存储在JVM堆中?
EN

Stack Overflow用户
提问于 2017-12-08 10:27:04
回答 1查看 632关注 0票数 2

我正在学习Apache,并试图清除与Spark中RDDs的缓存和持久性相关的概念。

因此,根据“学习火花”一书中关于持之以恒的文献:

为了避免多次计算RDD,我们可以要求Spark将数据持久化。当我们要求Spark持久化一个RDD时,计算RDD的节点会存储它们的分区。火花有很多层次的坚持,可以根据我们的目标来选择。 在Scala和Java中,默认的()将将数据存储在JVM堆中,作为非序列化对象()。在Python中,我们总是对持久化存储的数据进行序列化,因此默认的数据作为腌制对象存储在JVM堆中。当我们将数据写入磁盘或堆外存储时,这些数据也总是被序列化的。

但是为什么是--默认的()将把数据存储在JVM堆中,作为非序列化对象()。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-08 11:20:27

因为没有序列化和反序列化开销,因此可以在不需要额外内存的情况下加载低成本操作和缓存数据。SerDe是昂贵的,并且大大增加了总体成本。在最坏的情况下,保持序列化和反序列化对象(特别是使用标准Java序列化)可以使内存使用量增加一倍。

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

https://stackoverflow.com/questions/47712382

复制
相关文章

相似问题

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