内容简介
一、Spark算子的概念
- 在Spark中提供了大量的算子来操作RDD,所谓算子可以理解为操作RDD的方法或者函数。算子大致分为两种类型:transform算子和action算子,所谓transform算子是将一个RDD转变为另一个RDD的算子,但是transform算子不触发提交作业,只是完成作业中间过程处理,也就是说从一个RDD 转换生成另一个 RDD 的转换操作不是马上执行,需要等到有 action 操作的时候才会真正触发运算。transform参数类型为value或者key-value的形式;action算子可以理解为将RDD执行非转化类型操作的算子,比如说将结果持久化至外部存储系统的操作等等,action算子会触发SparkContext提交job作业。
- 通俗地理解,transform算子,是对RDD执行变换操作的算子,它的返回值是一个RDD,而对于action算子,是对RDD执行非变换操作的算子,它的返回值一定不是RDD。对于一个Spark程序而言,必须要存在至少一个action算子,程序才会被执行,否则会抛出一个异常。
二、Spark常用算子概览
1. transform算子
算子名称 | 算子功能 |
---|---|
map | 对RDD中的每个元素都执行一个指定函数来产生一个新的RDD。任何原RDD中的元素在新RDD中都有且只有一个元素与之对应。 |
flatMap | 与map类似,将原RDD中的每个元素通过 |