Spark RDD概念学习系列之RDD是什么?(四)-阿里云开发者社区

开发者社区> 大数据> 正文
登录阅读全文

Spark RDD概念学习系列之RDD是什么?(四)

简介:

  RDD是什么?

 

      通俗地理解,RDD可以被抽象地理解为一个大的数组(Array),但是这个数组是分布在集群上的。详细见  Spark的数据存储

  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分区。

      这个数据集的全部或部分可以缓存在内存中,在多次计算间重用。

      所谓弹性,是指在内存不够时可以与磁盘进行交换。进一步见   细谈RDD的弹性

     这设计了RDD的另一个特性:内存计算,就是将数据保存到内存中。同时为了解决内存容量限制问题,Spark为我们提供了最大的自由度,所有数据均可由我们来进行cache的设置,包括是否cache和如何cache。

 

  RDD是基于工作集的应用抽象。 

  Hadoop MapReduce基于数据集的处理:从物理存储上加载数据,然后操作数据,然后写入物理存储设备。

  基于数据集的操作不适应的场景:

    1、  不适合于大量的迭代。

    2、  交互式查询

  重点是,基于数据流的方式,不能够复用曾经的结果或者中间计算结果。

 

 

 

 

 

简洁点来说

  RDD是弹性分布式数据集的简称,其本身是一个抽象类,其内部实现包括以下五个部分,其中前三个是必备的:

  getPartitions方法:分区列表(数据块列表)

  compute方法(计算每个分片的函数)

  getDependencies方法(对父RDD的依赖列表)

  partitioner:key-value(键-值)RDD的分区器

  getPreferredLocations方法:每个数据分片的预定义地址列表(如HDFS上的数据块的地址)

  其中,前三个用于描述RDD间的Lineage信息,后两个可用于优化执行。

 

 

 

本文转自大数据躺过的坑博客园博客,原文链接:http://www.cnblogs.com/zlslch/p/5723446.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
大数据
使用钉钉扫一扫加入圈子
+ 订阅

大数据计算实践乐园,近距离学习前沿技术

其他文章