RDD算子的分类
算子:RDD所能调用的函数
判定算子类型:只能依据返回值来判断,返回值是RDD则肯定是转换算子
按照类型划分只有两类:转换算子和触发算子
按照使用功能可以划分为基础算子和分析算子
Tranformation(转换)算子
- 功能:用于实现对RDD的数据进行转换
- 特点:都是lazy模式的,一般不会触发job的运行,算子返回值一定是RDD
- 常见:map/filter/flatMap/reduceByKey/groupByKey/sortByKey
Action(触发)算子
- 功能:触发job的运行,用于对RDD的数据进行输出或者保存
- 特点:一定会触发job的运行,返回值一定不是RDD
- 常见:foreach、first、count、reduce、saveAsTextFile、collect、take
小结:
转换算子:一般不会触发job的构建,都是lazy模式,算子的返回值一定是RDD类型
触发算子:一定会触发job,构建Task将数据返回给用户,算子的返回值一定不是RDD类型
常用的基础算子
转换算子
map
- 功能:对RDD中每个元素进行操作,并将处理好的每个结果直接放入一个新的RDD中
- 场景:一对一的处理
- 语法:
def map(self , f: T -> U ) -> RDD[U]
-
- f:函数
-
- T:f函数的参数
-
- -> :表示转换
-
- U: 返回值
flatMap
- 功能:将两层列表List[List[A]],转换成一层列表List[A],类似于SQL中explode函数
- 场景:一对多的处理