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()

最新文章

  1. Linux(十)___iptables防火墙
  2. iOS开发-UINavigationBar透明设置
  3. Python 处理数据库返回结果
  4. 单个pdf提取测试
  5. Angular - ng-repeat高级用法
  6. Memcached使用
  7. unity延时方法Invoke和InvokeRepeating
  8. Oracle - 找不到原因的无效字符
  9. 分西瓜(DFS)
  10. shell-----sed命令详解
  11. bash 特殊变量
  12. learning makefile 模式规则
  13. Jmeter5.1.1的汉化
  14. Day 6-3 粘包现象
  15. 常用zookeeper命令
  16. mysql Percona-XtraBackup backup
  17. pymouse 点击指定坐标点
  18. Markdown 详细语法
  19. Java之创建对象>4.Enforce noninstantiability with a private constructor
  20. vue--点击事件

热门文章

  1. bootstrap怎么让手机端电脑端自适应显示隐藏元素
  2. Python实战项目1-开发流程需求分析/基础环境搭建
  3. OpenLayers入门练习
  4. 在Django中显示MySQL语句
  5. vue中使用xlsx 导出表格
  6. 红米note9 刷开机第一屏logo
  7. Kotlin学习-基础知识点
  8. 【PyCharm】配置 Git
  9. 四种语言刷算法之删除链表的倒数第 N 个结点
  10. lg9019题解