rdd

一、rdd的特性

1、RDD是Spark提供的核心抽象,全称为Resillient Distributed Dataset,即弹性分布式数据集。
2、RDD在抽象上来说是一种元素集合,包含了数据。它是被分区的,分为多个分区,每个分区分布在集群中的不同节点上,从而让RDD中的数据可以被并行操作。(分布式数据集)
3、RDD通常通过Hadoop上的文件,即HDFS文件或者Hive表,来进行创建;有时也可以通过应用程序中的集合来创建。
4、RDD最重要的特性就是,提供了容错性,可以自动从节点失败中恢复过来。即如果某个节点上的RDD partition,因为节点故障,导致数据丢了,那么RDD会自动通过自己的数据来源重新计算该partition。这一切对使用者是透明的。
5、RDD的数据默认情况下存放在内存中的,但是在内存资源不足时,Spark会自动将RDD数据写入磁盘。(弹性)

原文见http://blog.csdn.net/u010220089/article/details/49536087

 

所以说,RDD的这种自动进行内存和磁盘之间权衡和切换的机制,就是RDD的弹性的特点所在。

二、rdd的组成

原文见https://www.cnblogs.com/daguankele/p/7217531.html

RDD的组成分为以下5个部分:

1、分区集合,数据的原子片,就是数据的不同存放分区

2、父RDD的依赖信息

3、函数,用以从父RDD计算当前的RDD

4,5、分区数据存放的数据帧格式的元数据

可选:key-value型的RDD是根据哈希来分区的,类似于mapreduce当中的Paritioner接口,控制key分到哪个reduce。

可选:每一个分片的优先计算位置(preferred locations),比如HDFS的block的所在位置应该是优先计算的位置。

数据分布RDD接口表如下表所示

Operation
Meaning
partitions()返回一个 Partition 对象的列表
preferredLocations(p)根据数据列出分区p可以更快的被读取
dependencies()返回一系列的依赖
iterator(p,parentIters)给定父分区的迭代器后计算当前分区的元素的值
partitioner()返回元数据,指定RDD是否为散列/范围分区

其中的2,3可以被用来恢复rdd。

每个RDD都包含有一组RDD分区(partition),数据集的原子组成部分,还有对父RDD的一组依赖,这些依赖描述了RDD的Lineage;以及一个函数,说明在父RDD上执行何种计算;还包含元数据,描述分区模式和数据存放的位置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值