为了增强容错性和高可用,避免上游RDD被重复计算的大量时间开销,Spark RDD设计了包含多种存储级别的缓存和持久化机制,主要有三个概念:Cache.Persist.Checkout. 1.存储级别介绍(StorageLevel) 存储级别以一个枚举类StorageLevel定义,分为以下12种: StorageLevel枚举类存储级别 存储级别 使用空间 CPU时间 是否在内存中 是否在磁盘上 备注 NONE 否 否 否 否 不使用任何存储 DISK_ONLY 低 高 否 是 只存在磁盘上…
问题:cache 与 checkpoint 的区别? 关于这个问题,Tathagata Das 有一段回答: There is a significant difference between cache and checkpoint. Cache materializes the RDD and keeps it in memory and/or disk(其实只有 memory). But the lineage(也就是 computing chain) of RDD (that is, s…
cache只有一个默认的缓存级别MEMORY_ONLY ,而persist可以根据StorageLevel设置其它的缓存级别. cache以及persist都不是action. 被重复使用的(但是)不能太大的RDD需要cache cache 只使用 memory,checkpoint写磁盘 rdd.persist(StorageLevel.DISK_ONLY) 与 checkpoint 的区别: persist将 RDD 的 partition 持久化到磁盘,但该 partition 由 blo…
Spark学习笔记总结 03. Spark cache和checkpoint机制 1. RDD cache缓存 当持久化某个RDD后,每一个节点都将把计算的分片结果保存在内存中,并在对此RDD或衍生出的RDD进行的其他动作中重用(不需要重新计算).这使得后续的动作变得更加迅速.RDD相关的持久化和缓存,是Spark最重要的特征之一. val rdd = sc.textFile("hdfs://172.23.27.19:9000/wrd/wc/srcdata/").flatMap(_.s…
通过观察RDD.scala源代码即可知道cache和persist的区别: def persist(newLevel: StorageLevel): this.type = { if (storageLevel != StorageLevel.NONE && newLevel != storageLevel) { throw new UnsupportedOperationException( "Cannot change storage level of an RDD afte…
checkpoint checkpoint(检查点)是Spark为了避免长链路,大计算量的Rdd不可用时,需要长时间恢复而引入的.主要就是将通过大量计算而获得的这类Rdd的数据直接持久化到外部可靠的存储体系中(一般为hdfs文件).在以后再需要从这个Rdd获取数据时,直接从检查点获取数据从而避免了从头重新计算Rdd的数据. 生成checkpoint checkpoint是在job执行结束后再启动专门的checkpoint job生成的(完成job的action方法之后),也就是说需要checkp…
RDD的持久化 1. RDD Cache缓存 ​ RDD通过Cache或者Persist方法将前面的计算结果缓存,默认情况下会把数据以缓存在JVM的堆内存中.但是并不是这两个方法被调用时立即缓存,而是触发后面的action算子时,该RDD将会被缓存在计算节点的内存中,并供后面重用. 使用 1.rdd.cache() 等价于rdd.persist(MEMORY_ONLY) 2.rdd.persist() 可以设置级别 object StorageLevel { val NONE = new Sto…
原文:HttpContext.Cache和Application的区别 (转载)   应用程序级的Cache和Application用户会话级的Session application的缺点是在读取时最好使用lock,unlock,损失性能的很.所以它适用那些不需要经常改动的,但又需要每个用户都可以读取到的.数据.     cache就是具有所有application的优点,然后又有自己的特点     1.基于依赖性的终止.使用关键字作为依赖项,关键字一变,cache内容无效并自动删除.    …
cache 和 buffer的区别: Cache:高速缓存,是位于CPU与主内存间的一种容量较小但速度很高的存储器.由于CPU的速度远高于主内存, CPU直接从内存中存取数据要等待一定时间周期,Cache中保存着CPU刚用过或循环使用的一部分数据, 当CPU再次使用该部分数据时可从Cache中直接调用,这样就减少了CPU的等待时间,提高了系统的效率. Cache又分为一级Cache(L1 Cache)和二级Cache(L2 Cache),L1 Cache集成在CPU内部,L2 Cache早期一般…
Linux Free命令每个数字的含义 和 cache .buffer的区别 我们按照图中来一细细研读(数字编号和图对应)1,total:物理内存实际总量2,used:这块千万注意,这里可不是实际已经使用了的内存哦,这里是总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用.3,free:未被分配的内存4,shared:共享内存5,buffers:系统分配的,但未被使用的buffer剩余量.注意这不是总量,而是未分配的量6,cached:系统分配的,但未…