• CacheManager源码分析


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

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

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

    我们进入getOrElseUpdate()方法中

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

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

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

    blockTransferService进行异步发
  • 相关阅读:
    1006 Sign In and Sign Out
    1005 Spell It Right
    1004 Counting Leaves
    1003 Emergency
    PAT甲级练习题1001、1002
    翻转字符串.
    JavaScript实现弹幕效果
    SSI技术
    c#事务处理(sqlTransaction)
    Fiddler查看接口响应时间
  • 原文地址:https://www.cnblogs.com/duodushuduokanbao/p/8795509.html
Copyright © 2020-2023  润新知