- 1、本文档共65页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
主讲人:xxx《Spark》大数据处理技术
SparkRDD弹性分布式数据集第5章
第5章SparkRDD弹性分布式数据集5.1RDD简介5.2常用操作5.3RDD的分区5.4持久化5.5容错机制5.6综合实例
第5章SparkRDD弹性分布式数据集
弹性分布式数据集(resilientdistributeddataset,RDD)是Spark对数据的核心抽象。通过这种统一的编程抽象,用户可以数据共享,并以一致的方式应对不同的大数据处理场景,提高Spark编程的效率和通用性。本章首先介绍RDD的特征;需要掌握RDD的创建方式和RDD的转换算子和行动算子的操作方法,了解RDD的持久化和容错机制。最后结合两个综合实例来加深对RDD编程的理解。第5章SparkRDD弹性分布式数据集
5.1RDD简介5.1RDD简介RDD是Spark对数据的核心抽象,是一个容错的、并行的数据结构。可以简单地把RDD理解成一个提供了许多操作接口的数据集合。和一般数据集不同的是,他的实际数据被划分为一到多个分区,所有分区数据分布存储于一批内存或磁盘中,这里的分区可以简单地和HadoopHDFS里面的文件块来对比理解。RDD可以让用户将数据存储到磁盘和内存中,并能控制数据的分区。
5.1RDD简介5.1.1RDD的特征1.不可变性RDD是一种不可变的数据结构。要想改变RDD中的数据,只能在现有的RDD基础上创建新的RDD。2.分区RDD表示的是一组数据的分区。这些分区运行在集群中的不同节点上。Spark存储RDD的分区和数据集物理分区之间关系的映射关系。RDD是各个分布式数据源之中数据的一个抽象,它通常表示分布在多个集群节点上的分区数据。3.容错性任何分散在集群中的节点数据都有可能出故障。RDD会自动处埋节点出故障的情况。当一个节点出故障导致存储的数据无法被访问,Spark则会在另外节点上自动重新创建、缓存出故障的节点中存储的分区,利用RDD的血统信息来重新计算丢失的缓存分区,甚至可以恢复整个RDD。
5.1RDD简介5.1.1RDD的特征4.接口RDD在Spark库中定义为一个抽象类。这个抽象类为多种数据源提供了一个处理数据的统一接口,包括HDFS、HBase、Cassandra等。这个接口同样可以用于处理存储于多个节点内存中的数据。5.强类型RDD在Spark库中定义成的抽象类有一个参数用于表示类型,这使得RDD可以表示不同类型的数据。RDD可以表示某一种类型数据的分布式集合,可以是Integer、Long、Float、String或者应用开发者自己定义的类型。6.驻留在内存中RDD的数据默认情况下存放在内存中的,RDD类提供一套支持内存计算的API。Spark允许RDD在内存中缓存或长期驻留。
创建的基本方式有两种,第一种是使用parallelize方法或者makeRDD方法创建,第二种是使用textFile加载本地或者集群文件系统中的数据。1.使用parallelize方法创建intRDDvarintRdd=sc.parallelize(List(1,2,3,4))使用val定义变量intRdd,然后使用parallelize方法对List(1,2,3,4)创建一个RDD。不过这也是一个“转换”运算,所以不会马上实际执行。scalaintRdd.collect()然后执行collect(),这时会转换为Array。这是一个“动作”运算,所以会立即执行返回Array。5.1RDD简介5.1.2RDD的创建
5.1RDD简介5.1.2RDD的创建2.查看使用parallelize方法创建RDD的分区数valseq=List((AmericanPerson,List(Tom,Jim)),(ChinaPerson,List(LiLei,HanMeiMei)),(ColorType,List(Red,Blue)))//创建List对象seqvalrdd1=sc.parallelize(seq)//使用List对象seq创建RDD。rdd1.partitions.size//输出rdd1的分区个数,在不指定分区数的时候,使用系统给出的分区数1。valrdd2=sc.parallelize(seq,3)//指定分区数来创建RDD对象rdd2,指定分区个数为3。rdd2.partitions.size//输出rdd2的分区个数,在指定分区数的时候,显示指定的分区个数。创建一个List对象seq,se
您可能关注的文档
- 专题训练 全等三角形压轴题型-《讲亮点》2022-2023学年八年级数学上册教材同步配套讲练(苏科版)(原卷版).pdf
- 第3课时合格率(2).pdf
- 专题训练 一次函数30道经典压轴题型专项训练(解析版).pdf
- 专题训练 整式的混合运算与化简求值(解析版).pdf
- 第3课时天安门广场(1).pdf
- 第3课时一个数除以分数.pdf
- 专题训练 轴对称30道压轴题训练-《讲亮点》2022-2023学年八年级数学上册教材同步配套讲练(苏科版)(解析版).pdf
- 专题训练 轴对称30道压轴题训练-《讲亮点》2022-2023学年八年级数学上册教材同步配套讲练(苏科版)(原卷版).pdf
- 专题训练 轴对称常考折叠问题(32道)-《讲亮点》2022-2023学年八年级数学上册教材同步配套讲练(苏科版)(解析版).pdf
- 第3篇_第6章-算法与程序设计基础.pptx
文档评论(0)