Spark中的缓存机制:避免spark每次都重算RDD以及它的所有依赖,cache()、persist()、 checkpoint()。

1、cache():会被重复使用,但是不能太大的RDD,将其cache()到内存当中,catch()属于 memory only 。cache 是每计算出一个要 cache 的 partition 就直接将其 cache 到内存中。缓存完之后,可以在任务监控界面storage里面看到缓存的数据。

spark cache (几种缓存方法):https://blog.csdn.net/zhuiqiuuuu/article/details/79290221

2、persist():可以设置缓存级别,如只在内存,只在磁盘,内存磁盘都用。

3、checkpoint():computing chain 计算链过长或依赖其他 RDD 很多的 RDD,就需要进行checkpoint,将其放入到磁盘当中。

  checkpoint 需要等到job完成了,在启动专门的job去完成checkpoint 操作,因此RDD是被计算了两次的。一般使用过的时候配合rdd.cache(),这样第二次就不用重新计算RDD了,直接读取 cache 写磁盘。

  rdd.persist(StorageLevel.DISK_ONLY) 与 checkpoint 也有区别,persist一旦程序执行结束,所有的缓存无论在内存还是磁盘都会被删掉。而而 checkpoint 将 RDD 持久化到 HDFS 或本地文件夹,如果不被手动 remove 掉,是一直存在的,也就是说可以被下一个 driver,program 使用,而 cached RDD 不能被其他 dirver program 使用。

同时:cache 跟 persist不会截断血缘关系,checkPoint会截断血缘关系。

补充:缓存太多的时候,spark会自动使用 LRU 缓存策略(最近最少使用缓存策略),将最老的分区从内存中移除。若下次使用被移除的分区时,只能重算。

最新文章

  1. 使用JavaScript的history对象来实现页面前进后退(go/back/forward)。
  2. 孟加拉央行SWIFT攻击事件恶意木马分析(转)
  3. 指针 取地址& 解引用 *
  4. LeetCode_Surrounded Regions
  5. Merge k Sorted Lists 解答
  6. mysql数据库主从搭建
  7. 【Sqlserver系列】CAST和CONVERT
  8. [转帖]Windows 上面IE的历史
  9. RestTemplate的逆袭之路,从发送请求到负载均衡
  10. Python——Message控件
  11. CDN 服务域名解析配置
  12. python 获取整点时间戳,半整点时间戳 ,同时将时间戳转换成 日期时间
  13. linux编译内核make menuconfig报错Unable to find the ncurses libraries解决办法
  14. Android之Android apk动态加载机制的研究(二):资源加载和activity生命周期管理
  15. c++ primer读书笔记之c++11(一)
  16. Linux--忘记MySQL密码的解决方法和输入mysqld_safe --skip-grant-tables &后无法进入MySQL的解决方法
  17. 微信WeUI常见页面模板
  18. Android的JNI调用(二)
  19. 5G信令(就是用户身份信息)——手机开机后,先从USIM中读取之前运营商分配的临时身份信息GUTI/TMSI,发送携带该身份信息的信令给基站,请求接入运营商网络。
  20. 使用solr模拟京东搜素功能

热门文章

  1. setdefault函数的用法及理解
  2. Python之路【第二十七篇】:web服务器django
  3. vps建站施工预告
  4. hive工作中的一些优化策略
  5. RabbitMq 概述
  6. 无法定位 Local Database Runtime 安装。请验证 SQL Server Express 是否正确安装以及本地数据库运行时功能是否已启用。
  7. 关于使用jquery form submit出现多次提交的问题
  8. Linux系统怎么分区
  9. 【转载】 C#中decimal.TryParse方法和decimal.Parse方法的异同之处
  10. js文本对象模型【DOM】(十一)