今天开始挖新坑,开始总结Spark, 同时变更一下标题样式, 使内容更加明显。j
Spark的核心在于RDD(弹性分布式数据集),但RDD具有一个特性:
只在处理过程中存在,一旦处理完释放。
这个特性的目的在于:最大化利用资源,老旧的RDD没用了,就从内存中清理,给后续计算腾空间
但是存在如下场景:后续的RDD‘需要基于之前某个被清理的RDD进行继承,但RDD早就被清理了
为了避免上述情况:使用持久化技术来解决
持久化技术分为两类
- 缓存 : 将某个RDD放入内存或者磁盘中,以备后续使用
rdd1.cache()
rdd1.persist(StorageLevel, MEMORY_ONLY)
rdd1.persist(StorageLevel, DISK_ONLY)
- 由于采用分散存储的形式,不支持写入HDFS,所以缓存被认为是设计不安全的
- 缓存一定保留了 “ 被缓存RDD的’血缘‘关系 ”
checkpoint
- 也是一种持久化技术
- 被设计认为是安全的,具体通过