RDD是“Resilient Distributed Dataset”的缩写,从全称就可以了解到RDD的一些典型特性:
- Resilient(弹性):RDD之间会形成有向无环图(DAG),如果RDD丢失了或者失效了 , 可以从父RDD重新计算得到 。即容错性 。
- Distributed(分布式):RDD的数据是以逻辑分区的形式分布在集群的不同节点的 。
- Dataset(数据集):即RDD存储的数据记录,可以从外部数据生成RDD , 例如Json文件,CSV文件,文本文件,数据库等 。
1.RDD特性
- 内存计算:Spark RDD运算数据是在内存中进行的,在内存足够的情况下,不会把中间结果存储在磁盘,所以计算速度非常高效 。
- 惰性求值:所有的转换操作都是惰性的 , 也就是说不会立即执行任务,只是把对数据的转换操作记录下来而已 。只有碰到action操作才会被真正的执行 。
- 容错性:Spark RDD具备容错特性,在RDD失效或者数据丢失的时候,可以根据DAG从父RDD重新把数据集计算出来,以达到数据容错的效果 。
- 不变性:RDD是进程安全的,因为RDD是不可修改的 。它可以在任何时间点被创建和查询 , 使得缓存,共享,备份都非常简单 。在计算过程中,是RDD的不可修改特性保证了数据的一致性 。
- 持久化:可以调用cache或者persist函数 , 把RDD缓存在内存、磁盘,下次使用的时候不需要重新计算而是直接使用 。
- 转换操作(Transformation) 。
- 行动操作(Actions) 。
转换操作以RDD做为输入参数 , 然后输出一个或者多个RDD 。转换操作不会修改输入RDD 。Map()、Filter()这些都属于转换操作 。
转换操作是惰性求值操作,只有在碰到行动操作(Actions)的时候,转换操作才会真正实行 。转换操作分两种:「窄依赖」和「宽依赖」 。
下面是一些常见的转换操作:
描述
map
将函数应用于 RDD 中的每个元素,并返回一个新的 RDD
filter
返回一个新的 RDD,其中包含满足给定谓词的元素
flatMap
将函数应用于 RDD 中的每个元素,并将返回的迭代器展平为一个新的 RDD
union
返回一个新的 RDD,其中包含两个 RDD 的元素
distinct
返回一个新的 RDD,其中包含原始 RDD 中不同的元素
groupByKey
将键值对 RDD 中具有相同键的元素分组到一起,并返回一个新的 RDD
reduceByKey
将键值对 RDD 中具有相同键的元素聚合到一起,并返回一个新的 RDD
sortByKey
返回一个新的键值对 RDD , 其中元素按照键排序
(2)行动操作(Action)
Action是数据执行部分 , 其通过执行count,reduce,collect等方法真正执行数据的计算部分 。
描述
reduce
通过函数聚合 RDD 中的所有元素
collect
将 RDD 中的所有元素返回到驱动程序
count
返回 RDD 中的元素个数
first
返回 RDD 中的第一个元素
take
返回 RDD 中的前 n 个元素
takeOrdered
返回 RDD 中的前 n 个元素,按照自然顺序或指定的顺序排序
saveAsTextFile
将 RDD 中的元素保存到文本文件中
foreach
将函数应用于 RDD 中的每个元素
3.RDD 的创建方式创建RDD有3种不同方式:
推荐阅读
- 烤箱新手教程 烤箱入门窍门
- 指南针的作用和意义 指南针的作用意义是什么
- 精致女生减肥指南,20个习惯,做到一半,就能再瘦70年
- 微波炉怎么选购指南视频 微波炉怎么选购指南
- 指南针怎么看 指南针怎么看海拔
- 抖音产业带服务商入驻详细指南!
- 春节社交礼仪 春节社交礼仪指南
- 中国早期的指南针也被称为什么?A 中国早期的指南针也被称为什么
- Tomcat目录结构详解:从新手到专家的指南
- “十一”长假哪天最堵?这份“避堵”指南请收好