三:RDD介绍

(本人初次接触spark可能有些地方理解的不够到位,希望各位读者多多指正,对于不恰当的地方也会进行改进)

1、RDD定义:是弹性分布式数据集,是分布到各个节点的数据集合,具有自动容错性、位置感知调度和可伸缩性等。

2、RDD的特性:

2.1 分区(partition)

分区是RDD的基本组成单位(spark并行处理的基本单元),属于RDD的子集。每个分区的计算都是独立执行的,并且分布到Slave节点上去计算。每个节点上可能会有多个分区,每个分区有对应的Task线程。

2.2 依赖

由于RDD之间的转换操作可以从已有RDD创建出新的RDD,一次新旧RDD之间必定会存在着某种联系,这种关系就被称为依赖。

依赖的分类:

窄依赖:父RDD的每个分区最多被子RDD的一个分区所依赖(一对一的关系);

宽依赖:父RDD的每个分区可被子RDD的多个分区所依赖(一对多的关系)。

窄依赖和宽依赖的比较:

(1)窄依赖:子RDD中的某个分区出错,可以方便的计算出其父RDD所对应的分区,然后进行重新计算生成子RDD对应的分区;

(2)子RDD出错可能导致父RDD的多个分区进行重新计算。

union操作是将两个RDD中的元素进行合并,将结果封装成新的RDD,类似与两个集合的合并运算。
join针对Key-Value对形式的两个RDD进行连接操作,连接的依据是Key值,其功能与关系型数据库中
表的内连接操作相同。

3、RDD的创建:

RDD的创建有三种方式:基于集合进行创建、基于外部存储创建、根据已有RDD进行创建(RDD的创建操作)。

基于集合创建提供了parallelize和makeRDD两个操作。对于基于外部存储创建,通常是从HDFS中获取数据, 常用的操作就是textFile。

4、RDD的操作:

RDD的操作大致上可以分为两类:转换操作(Transformation)和执行操(Action)作。

转换操作就是根据已有RDD生产新的RDD,且具有惰性策略(只有执行了执行操作才会被提交到各个节点去计算)。执行操作就是向驱动程序返回结果或者是将结果写入外部存储系统。

RDD的创建和转换操作:

5、持久化操作

持久化操作是为了避免RDD被重新计算,能够提高计算速度。

操作:persist(持久化到磁盘或内存)、cache(持久化到内存)、checkpiont(持久化到磁盘)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玉成226

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值