ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
# spark 有哪几种存储级别StoreLevel MEMORY\_ONLY:默认选项,RDD的(分区)数据直接以Java对象的形式存储于JVM的内存中,如果内存空间不足,某些分区的数据将不会被缓存,需要在使用的时候根据世代信息重新计算。 MEMORY\_ONLY\_SER:RDD的数据(Java对象)序列化之后存储于JVM的内存中(一个分区的数据为内存中的一个字节数组),相比于MEMORY\_ONLY能够有效节约内存空间(特别是使用一个快速序列化工具的情况下),但读取数据时需要更多的CPU开销;如果内存空间不足,处理方式与MEMORY\_ONLY相同。 MYMORY\_AND\_DISK:RDD的数据直接以Java对象的形式存储于JVM的内存中,如果内存空间不中,某些分区的数据会被存储至磁盘,使用的时候从磁盘读取。 MEMORY\_AND\_DISK\_SER:相比于MEMORY\_ONLY\_SER,在内存空间不足的情况下,将序列化之后的数据存储于磁盘。 DISK\_ONLY:仅仅使用磁盘存储RDD的数据(未经序列化)。 xxx\_2:以MEMORY\_ONLY\_2为例,MEMORY\_ONLY\_2相比于MEMORY\_ONLY存储数据的方式是相同的, 不同的是会将数据备份到集群中两个不同的节点,其余情况类似。 ### 7、spark中cache和persist的区别 * cache:缓存数据,默认是缓存在内存中,其本质还是调用persist * persist:缓存数据,有丰富的数据缓存策略。数据可以保存在内存也可以保存在磁盘中,使用的时候指定对应的缓存级别就可以了。