文章目录
- 前言
- 一、RDD的算子分类
- 二、Transformation转换算子
- 三、Action动作算子
- 总结
前言
#博学谷IT学习技术支持#
上一篇文章主要讲述了两种RDD的创建方式,本篇文章接着讲RDD的算子及其分类。
一、RDD的算子分类
RDD的算子主要有两种类型,一种是Transformation转换算子,另一种是Action动作算子,Transformation转换算子执行完成后会返回一个新的RDD,所有的Transformation转换算子都是Lazy,不会立即执行,需要Action算子触发;Action动作算子一般情况下都没有返回值,Action动作算子都是立即执行的。
注意:
(1)RDD不存储实际的数据,而是记录了数据的位置和数据的转换关系;
(2)RDD中所有转换算子都是惰性的,不会直接开始计算,需要Action动作算子触发才会开始计算。
二、Transformation转换算子
- 简介
转换算子表示将一个RDD通过一系列操作后转变成新RDD的过程,该过程有可能是简单的加减乘除,也有可能是一系列复杂的函数,需要注意的是,转换算子只是建立RDD间的关系,并不会触发正在的计算。
2.转换算子的类型
转换算子的类型主要有三种,值类型、双值类型和Key-Value类型- 值类型,该类型主要操作单个RDD,例如map算子、groupBy算子、Filter算子、FlatMap算子等
- 双值类型,该类型主要操作两个RDD,例如Union求两个RDD的并集,Intersection求两个RDD的交集
- Key-Value类型,该种类型的算子的对象一般都是元组或者字典,例如groupByKey、reduceByKey、sortByKey等
三、Action动作算子
- 简介
与转换操作不同,Action代表一次计算的结束,不会产生新的RDD,Transformation操作只是建立计算关系,而Action 操作才是实际的执行者。每个Action操作对应一个Job,都会调用SparkContext的runJob 方法向集群正式提交请求 - 常用的动作算子
常用的动作算子有:collect返回RDD的所有元素、first返回RDD的第一个元素、take返回RDD的前N个元素等
总结
RDD算子的分类主要有两种,一种是Transformation转换算子,另一种是Action动作算子,使用流程一般是先Transformation转换算子,再Action动作算子,先建立RDD间的关系,然后再使用Action算子统一进行计算。