RDD概述及算子
1.什么是RDD
- Spark是一个分布式数据集的分析框架,将计算单元缩小 为更适合分布式计算和并行计算的模型,称之为RDD
- RDD(Resilient Distributed Dataset)叫做弹性分布式 数据集,是Spark中最基本的数据(计算)抽象。
- 代码中是一个抽象类,它代表一个不可变、可分区、里面 的元素可并行计算的集合。
2.RDD的属性
一组分区(Partition)即数据集的基本组成单位
一个计算各个分区间的函数
一个有关于各个RDD间依赖关系的列表
一个存储存取每个Partition的优先位置(preferred location)的列表 优先位置是为了利于计算
一个关于键值key-value分片的Partitioner
3.RDD的特点
分区:
RDD逻辑上是分区的,每隔分区的数据是抽象存在的
计算的时候会通过一个compute函数得到每隔分区的数据
只读:
想要改变RDD 中的数据,只能在现有的RDD 基础上创建新的RDD
依赖:
RDD维护着操作算子转换的血缘关系,即依赖
依赖又分为两类:宽依赖和窄依赖
一个父RDD 对应多个子RDD,即宽依赖
一个父RDD 对应一个子RDD,即窄依赖
缓存:
如果在应用程序中多次使用同一个RDD,可以将该RDD 缓存起来,计算一次后进入缓存,就不再根据血缘关系计 算
Checkpoint:
迭代会使RDDs之间的血缘关系变长,因此RDD引入 checkpoint,将数据持久化存储,从而减轻血缘关系的 依赖
4.RDD 算子之创建RDD
创建RDD 有三种方式
从集合中创建RDD(内存)
从外部的存储创建RDD(硬盘)
从其他RDD创建(转换)
5.RDD 转换算子之Value类型
map():返回一个新的RDD,该RDD由每一个输入元素经过func 函数转换后组成
**m