Spark RDD有哪几种持久化级别?如何选择


RDD持久化用于RDD重用和节省重新计算,方便构建迭代算法,缓存粒度为整个RDD

持久化级别

StorageLevel 说明
MEMORY_ONLY

使用未序列化的Java对象格式,将数据保存在内存中。如果内存不够存放所有的数据,则数据可能就不会进行持久化,默认的持久化策略


MEMORY_AND_DISK

使用未序列化的Java对象格式,优先尝试将数据保存在内存中。如果内存不够存放所有的数据,会将数据写入磁盘文件中。不会立刻输出到磁盘


MEMORY_ONLY_SER

RDD的每个partition会被序列化成一个字节数组,节省空间,读取时间更占CPU


MEMORY_AND_DISK_SER

序列化存储,超出部分写入磁盘文件中


DISK_ONLY

使用未序列化的Java对象格式,将数据全部写入磁盘文件中


MEMORY_ONLY_2

对于上述任意一种持久化策略,如果加上后缀_2,代表的是将每个持久化的数据,都复制一份副本,并将副本保存到其他节点上


OFF_HEAP

RDD序列化存储在Tachyon



如何选择存储级别?

如果默认能满足使用默认的
如果不能于MEMORY_ONLY很好的契合,建议使用MEMORY_ONLY_SER
尽可能不要存储数据到磁盘上,除非数据集函数计算量特别大,或者它过滤了大量数据,否则从新计算一个分区的速度和从磁盘中读取差不多
如果想拥有快速故障恢复能力,可以使用复制存储级别(_2)
可以自定义存储级别(如复制因子为3),使用StorageLevel单例对象apply方法


参考:Spark RDD持久化级别


更多精选文章
标签: rdd、持久、memory、序列化、磁盘
一个创业中的苦逼程序员
笔试题


刷题


简历模板


AI算法


大数据


内推


推荐阅读:
阿里巴巴笔试面试大全
腾讯笔试面试大全
百度笔试面试大全
今日头条笔试面试大全
网易笔试面试大全
Google笔试面试大全
更多笔试面试大全
隐藏