深入理解Spark RDD——RDD信息对象
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方法的执行步骤如下:
- 获取当前RDD的名称(即name属性)作为RDDInfo的name属性,如果RDD还没有名称,那么调用Utils工具类的getFormattedClassName方法(见附录A)生成RDDInfo的name属性。
- 获取当前RDD依赖的所有父RDD的身份标识作为RDDInfo的parentIds属性。
- 创建RDDInfo对象。
深入理解Spark RDD——RDD信息对象相关推荐
- 理解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 ...
- 深入理解Spark 2.1 Core (一):RDD的原理与源码分析
摘要 本文提出了分布式内存抽象的概念--弹性分布式数据集(RDD,Resilient Distributed Datasets),它具备像MapReduce等数据流模型的容错特性,并且允许开发人员在大 ...
- 深入理解Spark RDD——RDD分区计算器Partitioner
在<深入理解Spark RDD--RDD依赖(构建DAG的关键)>一文,详细描述了RDD的宽窄依赖.RDD之间的依赖关系如果是Shuffle依赖,那么上游RDD该如何确定每个分区的输出将交 ...
- 深入理解Spark RDD——RDD实现的初次分析
RDD(Resilient Distributed Datasets,弹性分布式数据集)代表可并行操作元素的不可变分区集合.对于Spark的初学者来说,这个概念会十分陌生.即便是对于一些有Spark使 ...
- 理解Spark的核心RDD
与许多专有的大数据处理平台不同,Spark建立在统一抽象的RDD之上,使得它可以以基本一致的方式应对不同的大数据处理场景,包括MapReduce,Streaming,SQL,Machine Learn ...
- Spark的RDD检查点实现分析
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/beliefer/article/details/51206980 概述 在<深入理解Spark ...
- 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. ...
- spark的RDD中的action(执行)和transformation(转换)两种操作中常见函数介绍
参考文章:spark的RDD中的action(执行)和transformation(转换)两种操作中常见函数介绍 spark常见的RDD 1. 函数概览 2. 常见的Transformations 操 ...
- Spark之RDD实战篇3
键值对RDD.数据读取与保存.累加器.广播变量: 键值对RDD Spark 为包含键值对类型的 RDD 提供了一些专有的操作 在PairRDDFunctions专门进行了定义.这些 RDD 被称为 p ...
最新文章
- crontab详解及实例
- 【转】javax.xml.transform.TransformerFactoryConfigurationError
- 2022速卖通328大促活动招商规则出炉啦,热销高潜产品抢先看
- 怎么安装python_零基础入门必看篇:浅析python,PyCharm,Anaconda三者之间关系
- CreateFileMapping共享内存时添加Global的作用
- linux开发板显示横向彩虹,给 Linux 终端的输出添加彩虹特效的命令
- django之上传图片
- 所有科研人都应该收藏的论文下载网站,不是sci-hub!
- 年轻人有梦想,老人有回忆
- asp.net AJAX 验证用户名是否存在 -Jquery
- 介绍 JavaScript 中的闭包、局部变量(局部作用域)和私有变量等内容
- ORB-SLAM3配置安装及运行---Ubuntu20.04(2021年)
- python文件操作--写入文件
- 京东JD App签名/加密算法研究
- 三种快排及四种优化方式
- 云南鲁甸县附近发生6.5级地震 震源深度12千米
- php源码织梦,织梦DedeCms V6官方最新版下载
- 佟大为扮女人秀壮腿 被大夸美艳动人
- 稀疏矩阵详解:csr_matrix和csc_matrix
- android 应用数据分析