zoukankan      html  css  js  c++  java
  • CacheManager源码分析

    计算rdd的某个分区是从RDD的iterator()方法开始的,我们从这个方法进入

    然后我们进入getOrCompute()方法中看看是如何进行读取数据或计算的

    getOrElseUpdate()方方法的返回值类型如果是blockResult说明blockManager在本地或远程读取到了数据,或者没有读取到数据调用传入的方法computeOrReadCheckpoint重新计算(或读取checkpoint)得到了数据并成功写入缓存(磁盘或内存);如果返回值类型是iterator,说明没有读取到数据,计算得到的数据内存放不下只能返回iterator;

    我们进入getOrElseUpdate()方法中

    现在我们进入doPutIterator()方法中,看看是如何将计算的数据放入缓存的

    取得取得了info之后,继续向下走

    进行到这里位置数据已经得到了(iterator),然后会new MapStatus并发送给Master来更新状态,最后会判断存储级别是否要去副本,如果设置了_2之类的级别,就会通过

    blockTransferService进行异步发
  • 相关阅读:
    cordova windows环境配置
    javascript 变量声明 和 作用域
    javascript 数组总结
    处理事件的兼容写法
    javascript 闭包
    事件委托和事件绑定
    依赖注入
    .Net委托
    sql游标循环结果集
    T-Sql之集合
  • 原文地址:https://www.cnblogs.com/duodushuduokanbao/p/8795509.html
Copyright © 2011-2022 走看看