RDDInfo用于描述RDD的信息,RDDInfo提供的信息如下:

  • id:RDD的id。
  • name:RDD的名称。
  • numPartitions:RDD的分区数量。
  • storageLevel:RDD的存储级别(即StorageLevel)。
  • parentIds:RDD的父亲RDD的id序列。这说明一个RDD会有零到多个父RDD。
  • callSite:RDD的用户调用栈信息。
  • scope:RDD的操作范围。scope的类型为RDDOperationScope,每一个RDD都有一个RDDOperationScope。RDDOperationScope与Stage或Job之间并无特殊关系,一个RDDOperationScope可以存在于一个Stage内,也可以跨越多个Job。
  • numCachedPartitions:缓存的分区数量。
  • memSize:使用的内存大小。
  • diskSize:使用的磁盘大小。
  • externalBlockStoreSize:Block存储在外部的大小。

RDDInfo还提供了以下方法:

  • isCached:是否已经缓存。isCached的实现见代码清单1。

代码清单1   isCached的实现

  def isCached: Boolean = (memSize + diskSize > 0) && numCachedPartitions > 0
  • compare:由于RDDInfo继承了Ordered,所以重写了compare方法以用于排序。compare的实现见代码清单2。

代码清单2   compare的实现

  override def compare(that: RDDInfo): Int = {this.id - that.id}

此外,RDDInfo的伴生对象中定义了fromRdd方法,用于从RDD构建出对应的RDDInfo,其实现见代码清单3。

代码清单3  RDDInfo伴生对象的fromRdd方法

private[spark] object RDDInfo {def fromRdd(rdd: RDD[_]): RDDInfo = {val rddName = Option(rdd.name).getOrElse(Utils.getFormattedClassName(rdd))val parentIds = rdd.dependencies.map(_.rdd.id)new RDDInfo(rdd.id, rddName, rdd.partitions.length,rdd.getStorageLevel, parentIds, rdd.creationSite.shortForm, rdd.scope)}
}

根据代码清单3,fromRdd方法的执行步骤如下:

  1. 获取当前RDD的名称(即name属性)作为RDDInfo的name属性,如果RDD还没有名称,那么调用Utils工具类的getFormattedClassName方法(见附录A)生成RDDInfo的name属性。
  2. 获取当前RDD依赖的所有父RDD的身份标识作为RDDInfo的parentIds属性。
  3. 创建RDDInfo对象。

深入理解Spark RDD——RDD信息对象相关推荐

  1. 理解Spark中RDD(Resilient Distributed Dataset)

    文章目录 1 RDD 基础 1.1 分区 1.2 不可变 1.3 并行执行 2 RDD 结构 2.1 SparkContext.SparkConf 2.2 Partitioner 2.3 Depend ...

  2. 深入理解Spark 2.1 Core (一):RDD的原理与源码分析

    摘要 本文提出了分布式内存抽象的概念--弹性分布式数据集(RDD,Resilient Distributed Datasets),它具备像MapReduce等数据流模型的容错特性,并且允许开发人员在大 ...

  3. 深入理解Spark RDD——RDD分区计算器Partitioner

    在<深入理解Spark RDD--RDD依赖(构建DAG的关键)>一文,详细描述了RDD的宽窄依赖.RDD之间的依赖关系如果是Shuffle依赖,那么上游RDD该如何确定每个分区的输出将交 ...

  4. 深入理解Spark RDD——RDD实现的初次分析

    RDD(Resilient Distributed Datasets,弹性分布式数据集)代表可并行操作元素的不可变分区集合.对于Spark的初学者来说,这个概念会十分陌生.即便是对于一些有Spark使 ...

  5. 理解Spark的核心RDD

    与许多专有的大数据处理平台不同,Spark建立在统一抽象的RDD之上,使得它可以以基本一致的方式应对不同的大数据处理场景,包括MapReduce,Streaming,SQL,Machine Learn ...

  6. Spark的RDD检查点实现分析

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/beliefer/article/details/51206980 概述 在<深入理解Spark ...

  7. Spark:RDD编程总结(概述、算子、分区、共享变量)

    目录 1.RDD概述 1.1.RDD是什么 1.2.RDD的弹性 1.3.RDD的特点 1.3.1.分区 1.3.2.只读 1.3.3.依赖 1.3.4.缓存 1.3.5.检查点 2.RDD编程 2. ...

  8. spark的RDD中的action(执行)和transformation(转换)两种操作中常见函数介绍

    参考文章:spark的RDD中的action(执行)和transformation(转换)两种操作中常见函数介绍 spark常见的RDD 1. 函数概览 2. 常见的Transformations 操 ...

  9. Spark之RDD实战篇3

    键值对RDD.数据读取与保存.累加器.广播变量: 键值对RDD Spark 为包含键值对类型的 RDD 提供了一些专有的操作 在PairRDDFunctions专门进行了定义.这些 RDD 被称为 p ...

最新文章

  1. crontab详解及实例
  2. 【转】javax.xml.transform.TransformerFactoryConfigurationError
  3. 2022速卖通328大促活动招商规则出炉啦,热销高潜产品抢先看
  4. 怎么安装python_零基础入门必看篇:浅析python,PyCharm,Anaconda三者之间关系
  5. CreateFileMapping共享内存时添加Global的作用
  6. linux开发板显示横向彩虹,给 Linux 终端的输出添加彩虹特效的命令
  7. django之上传图片
  8. 所有科研人都应该收藏的论文下载网站,不是sci-hub!
  9. 年轻人有梦想,老人有回忆
  10. asp.net AJAX 验证用户名是否存在 -Jquery
  11. 介绍 JavaScript 中的闭包、局部变量(局部作用域)和私有变量等内容
  12. ORB-SLAM3配置安装及运行---Ubuntu20.04(2021年)
  13. python文件操作--写入文件
  14. 京东JD App签名/加密算法研究
  15. 三种快排及四种优化方式
  16. 云南鲁甸县附近发生6.5级地震 震源深度12千米
  17. php源码织梦,织梦DedeCms V6官方最新版下载
  18. 佟大为扮女人秀壮腿 被大夸美艳动人
  19. 稀疏矩阵详解:csr_matrix和csc_matrix
  20. android 应用数据分析

热门文章

  1. 华为前副总裁李一男正式出任百度CTO
  2. 出价策略正处于学习期...
  3. GOF 面向对象 23 种设计模式详解
  4. 我将加入2022年4月25日的 黑马前端培训班,开始我的IT学习
  5. Android多进程从头讲到尾,吐血整理
  6. 打飞机游戏 js 实现
  7. Unity--分场景
  8. 泡沫经济中的移动开发者
  9. 【关于如何自行下载Unity中文文档的说明】
  10. 20个经典bootsrtap后台html网站模板推荐