Spark 缓存机制
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 缓存策略(最近最少使用缓存策略),将最老的分区从内存中移除。若下次使用被移除的分区时,只能重算。
最新文章
- 使用JavaScript的history对象来实现页面前进后退(go/back/forward)。
- 孟加拉央行SWIFT攻击事件恶意木马分析(转)
- 指针 取地址&; 解引用 *
- LeetCode_Surrounded Regions
- Merge k Sorted Lists 解答
- mysql数据库主从搭建
- 【Sqlserver系列】CAST和CONVERT
- [转帖]Windows 上面IE的历史
- RestTemplate的逆袭之路,从发送请求到负载均衡
- Python——Message控件
- CDN 服务域名解析配置
- python 获取整点时间戳,半整点时间戳 ,同时将时间戳转换成 日期时间
- linux编译内核make menuconfig报错Unable to find the ncurses libraries解决办法
- Android之Android apk动态加载机制的研究(二):资源加载和activity生命周期管理
- c++ primer读书笔记之c++11(一)
- Linux--忘记MySQL密码的解决方法和输入mysqld_safe --skip-grant-tables &;后无法进入MySQL的解决方法
- 微信WeUI常见页面模板
- Android的JNI调用(二)
- 5G信令(就是用户身份信息)——手机开机后,先从USIM中读取之前运营商分配的临时身份信息GUTI/TMSI,发送携带该身份信息的信令给基站,请求接入运营商网络。
- 使用solr模拟京东搜素功能
热门文章
- setdefault函数的用法及理解
- Python之路【第二十七篇】:web服务器django
- vps建站施工预告
- hive工作中的一些优化策略
- RabbitMq 概述
- 无法定位 Local Database Runtime 安装。请验证 SQL Server Express 是否正确安装以及本地数据库运行时功能是否已启用。
- 关于使用jquery form submit出现多次提交的问题
- Linux系统怎么分区
- 【转载】 C#中decimal.TryParse方法和decimal.Parse方法的异同之处
- js文本对象模型【DOM】(十一)