文章目录
- 前言
- 一、RDD简介
- 二、RDD的特性
- 三、RDD的特点
- 总结
前言
#博学谷IT学习技术支持#
之前的文章主要介绍Spark基础知识,例如集群角色、Spark集群运行流程等,接下来会进一步讨论Spark相对核心的知识,让我们拭目以待,同时也期待各位的精彩留言!
一、RDD简介
RDD称为弹性分布式数据集,是Spark中最基本的数据抽象,其为一个不可变、可分区、元素可并行计算的集合;RDD中的数据是分布式存储,可用于并行计算,同时,RDD中的数据可以存储在内存或者磁盘中,这就是“弹性”的意义所在。
二、RDD的特性
RDD有5大特性,前三个特性是每个RDD必备的,而后面两个特性是可选的,特性分别为:
(1)RDD数据集可分区;
(2)一个函数会作用在RDD的每一个分区上;
(3)RDD间存在依赖关系,RDD的每一次转换都会生成一个全新的RDD,新旧RDD间存在依赖关系,当分区的部分数据丢失时,Spark可以通过依赖关系重新计算并获得丢失的分区数据;
(4)对于Key Value类型的数据,存在对应的分区函数;
(5)遵循移动数据不如移动计算的理念,Spark进度任务调度时,会尽量选择存有数据的Worker节点进行并行计算。
三、RDD的特点
RDD也有5大特点,分别如下:
(1)RDD可分区,该分区只是一种逻辑分区,仅定义分区的规则,并不会对数据进行分区操作;
(2)每一个RDD都是只读,不可变的,如果需要修改RDD,只能在原有RDD上新创建一个新的RDD,旧的RDD保持不变;
(3)RDD间存在依赖关系,每个RDD之间都存在依赖关系,并且依赖关系分为宽依赖和窄依赖;
(4)RDD可以设置Cache缓存,当一个RDD被多个RDD依赖时,可以将该RDD进行缓存,后续如果需要使用该RDD,直接使用即可,无需再次进行计算;
(5)RDD可以设置Checkpoint检查点,与Cache类似,都是可以保存RDD的计算结果,与Cache不同的是,Checkpoint支持持久化保存,也就是可以将RDD的计算结果保存到可持久化的存储中,同时也会截断RDD间的依赖关系。
总结
RDD弹性分布式数据集是一个抽象的数据模型,其本身不存储任何数据,仅仅作为传输数据的管道,对于使用者来说,只需要同时RDD从哪里读取数据,中间过程需要使用怎样的转换逻辑,以及最后将数据存储在哪个位置即可,程序一旦启动,则会按照设定的规则完成一系列的操作。