RDD持久化和检查点
2024-09-08 19:34:32
val count: RDD[(String, Int)] = mapRDD.reduceByKey(_ + _)
count.collect()
val value: RDD[(String, Iterable[(String, Int)])] = mapRDD.groupBy(_._1)
value.collect()
在上面代码中mapRDD转换两次:reduceByKey 和 groupBy,这种情况下RDD是从头执行两遍;性能不高
解决方法:RDD持久化
mapRDD.cache() 并不会立即持久化,而是在触发后面的action算子时,才会缓存在计算节点的内存中
mapRDD.persist(StorageLevel.MEMORY_AND_DISK) 可以设置存储级别 内存 或 磁盘
自己使用,用完后丢弃
检查点:检查点可以切断血缘关系,检查点其实就是将RDD结果写入磁盘(一般是写入HDFS分布式环境)
由于血缘依赖过长会造成容错成本过高,这样就不如在中间阶段做检查点容错,如果检查点之后有节点出现问题,可以从检查点开始重做血缘,减少了开销。
对RDD进行checkpoint操作并不会马上被执行,必须执行Action操作才能触发
检查点需要指定磁盘目录,为了安全,检查点会执行两遍RDD(优化方法:持久化和检查点结合使用,先持久化,再检查点)
mapRDD.cache()
mapRDD.checkpoint()
最新文章
- Linux(十)___iptables防火墙
- iOS开发-UINavigationBar透明设置
- Python 处理数据库返回结果
- 单个pdf提取测试
- Angular - ng-repeat高级用法
- Memcached使用
- unity延时方法Invoke和InvokeRepeating
- Oracle - 找不到原因的无效字符
- 分西瓜(DFS)
- shell-----sed命令详解
- bash 特殊变量
- learning makefile 模式规则
- Jmeter5.1.1的汉化
- Day 6-3 粘包现象
- 常用zookeeper命令
- mysql Percona-XtraBackup backup
- pymouse 点击指定坐标点
- Markdown 详细语法
- Java之创建对象>;4.Enforce noninstantiability with a private constructor
- vue--点击事件