Spark RDD概念学习系列之RDD是什么?(四)
2016-07-31 17:19
274 查看
[b] RDD是什么?[/b]
通俗地理解,RDD可以被抽象地理解为一个大的数组(Array),但是这个数组是分布在集群上的。详细见 [b]Spark的数据存储[/b]
Spark的核心数据模型是RDD,但RDD是个抽象类,具体由各子类实现,如MappedRDD、 ShuffledRDD等子类。 Spark将常用的大数据操作都转化成为RDD的子类。
官方对RDD的解释是:弹性分布式数据集,全称是Resilient Distributed Datasets。RDD是只读的、分区记录的集合。RDD只能基于在稳定物理存储中的数据集和其他已有的RDD上执行确定性操作来创建。这些确定性操作称为转换,如map、filter、groupBy、join。
RDD不需物化,RDD含有如何从其他RDD衍生(即计算)出本RDD的相关信息(即Lineage),因此在RDD部分分区数据丢失的时候可以从物理存储的数据计算出相应的RDD分区。
这个数据集的全部或部分可以缓存在内存中,在多次计算间重用。
所谓弹性,是指在内存不够时可以与磁盘进行交换。进一步见 [b]细谈RDD的弹性[/b]
这设计了RDD的另一个特性:内存计算,就是将数据保存到内存中。同时为了解决内存容量限制问题,Spark为我们提供了最大的自由度,所有数据均可由我们来进行cache的设置,包括是否cache和如何cache。
RDD是基于工作集的应用抽象。
Hadoop MapReduce基于数据集的处理:从物理存储上加载数据,然后操作数据,然后写入物理存储设备。
基于数据集的操作不适应的场景:
1、 不适合于大量的迭代。
2、 交互式查询
重点是,基于数据流的方式,不能够复用曾经的结果或者中间计算结果。
[b]简洁点来说[/b],
RDD是弹性分布式数据集的简称,其本身是一个抽象类,其内部实现包括以下五个部分,其中前三个是必备的:
getPartitions方法:分区列表(数据块列表)
compute方法(计算每个分片的函数)
getDependencies方法(对父RDD的依赖列表)
partitioner:key-value(键-值)RDD的分区器
getPreferredLocations方法:每个数据分片的预定义地址列表(如HDFS上的数据块的地址)
其中,前三个用于描述RDD间的Lineage信息,后两个可用于优化执行。
欢迎大家,加入我的微信公众号:大数据躺过的坑 免费给分享
同时,大家可以关注我的个人博客:
http://www.cnblogs.com/zlslch/ 和 http://www.cnblogs.com/lchzls/
人生苦短,我愿分享。本公众号将秉持活到老学到老学习无休止的交流分享开源精神,汇聚于互联网和个人学习工作的精华干货知识,一切来于互联网,反馈回互联网。
目前研究领域:大数据、机器学习、深度学习、人工智能、数据挖掘、数据分析。 语言涉及:Java、Scala、Python、Shell、Linux等 。同时还涉及平常所使用的手机、电脑和互联网上的使用技巧、问题和实用软件。 只要你一直关注和呆在群里,每天必须有收获
以及对应本平台的QQ群:161156071(大数据躺过的坑)
通俗地理解,RDD可以被抽象地理解为一个大的数组(Array),但是这个数组是分布在集群上的。详细见 [b]Spark的数据存储[/b]
Spark的核心数据模型是RDD,但RDD是个抽象类,具体由各子类实现,如MappedRDD、 ShuffledRDD等子类。 Spark将常用的大数据操作都转化成为RDD的子类。
官方对RDD的解释是:弹性分布式数据集,全称是Resilient Distributed Datasets。RDD是只读的、分区记录的集合。RDD只能基于在稳定物理存储中的数据集和其他已有的RDD上执行确定性操作来创建。这些确定性操作称为转换,如map、filter、groupBy、join。
RDD不需物化,RDD含有如何从其他RDD衍生(即计算)出本RDD的相关信息(即Lineage),因此在RDD部分分区数据丢失的时候可以从物理存储的数据计算出相应的RDD分区。
这个数据集的全部或部分可以缓存在内存中,在多次计算间重用。
所谓弹性,是指在内存不够时可以与磁盘进行交换。进一步见 [b]细谈RDD的弹性[/b]
这设计了RDD的另一个特性:内存计算,就是将数据保存到内存中。同时为了解决内存容量限制问题,Spark为我们提供了最大的自由度,所有数据均可由我们来进行cache的设置,包括是否cache和如何cache。
RDD是基于工作集的应用抽象。
Hadoop MapReduce基于数据集的处理:从物理存储上加载数据,然后操作数据,然后写入物理存储设备。
基于数据集的操作不适应的场景:
1、 不适合于大量的迭代。
2、 交互式查询
重点是,基于数据流的方式,不能够复用曾经的结果或者中间计算结果。
[b]简洁点来说[/b],
RDD是弹性分布式数据集的简称,其本身是一个抽象类,其内部实现包括以下五个部分,其中前三个是必备的:
getPartitions方法:分区列表(数据块列表)
compute方法(计算每个分片的函数)
getDependencies方法(对父RDD的依赖列表)
partitioner:key-value(键-值)RDD的分区器
getPreferredLocations方法:每个数据分片的预定义地址列表(如HDFS上的数据块的地址)
其中,前三个用于描述RDD间的Lineage信息,后两个可用于优化执行。
欢迎大家,加入我的微信公众号:大数据躺过的坑 免费给分享
同时,大家可以关注我的个人博客:
http://www.cnblogs.com/zlslch/ 和 http://www.cnblogs.com/lchzls/
人生苦短,我愿分享。本公众号将秉持活到老学到老学习无休止的交流分享开源精神,汇聚于互联网和个人学习工作的精华干货知识,一切来于互联网,反馈回互联网。
目前研究领域:大数据、机器学习、深度学习、人工智能、数据挖掘、数据分析。 语言涉及:Java、Scala、Python、Shell、Linux等 。同时还涉及平常所使用的手机、电脑和互联网上的使用技巧、问题和实用软件。 只要你一直关注和呆在群里,每天必须有收获
以及对应本平台的QQ群:161156071(大数据躺过的坑)
相关文章推荐
- Spark RDD概念学习系列之Pair RDD的分区控制
- Spark RDD概念学习系列之为什么会引入RDD?(一)
- Spark RDD概念学习系列之RDD的转换图解
- Spark RDD概念学习系列之RDD的缺点(二)
- Spark RDD概念学习系列之RDD的缓存(八)
- Spark RDD概念学习系列之RDD的重要内部属性(十五)
- Spark RDD概念学习系列之Pair RDD的action操作
- Spark RDD概念学习系列之RDD的5大特点(五)
- Spark RDD概念学习系列之RDD的依赖关系(宽依赖和窄依赖)(三)
- Spark RDD概念学习系列之RDD的依赖关系(宽依赖和窄依赖)(三)
- Spark RDD概念学习系列之什么是Pair RDD
- Spark RDD概念学习系列之RDD的checkpoint(九)
- Spark RDD概念学习系列之细谈RDD的弹性(十六)
- Spark Streaming概念学习系列之Spark Streaming是什么?(一)
- Spark GraphX概念学习系列之Spark GraphX是什么?(一)
- Spark RDD概念学习系列之Spark的算子的分类(十一)
- Spark RDD概念学习系列之Spark Hash Shuffle内幕彻底解密(二十)
- Spark Tachyon概念学习系列之Spark Tachyon是什么?(一)
- Spark RDD概念学习系列之RDD的容错机制(十七)
- Spark RDD概念学习系列之典型RDD的特征