5.3 RDD 的转换(transformation)
在 RDD 上支持 2 种操作:
transformation
从一个已知的 RDD 中创建出来一个新的 RDD 例如:
map
就是一个transformation
.action
在数据集上计算结束之后, 给驱动程序返回一个值. 例如:
reduce
就是一个action
.
本节学习 RDD 的转换操作, Action
操作下节再学习.
在 Spark 中几乎所有的transformation
操作都是懒执行的(lazy
), 也就是说transformation
操作并不会立即计算他们的结果, 而是记住了这个操作.
只有当通过一个action
来获取结果返回给驱动程序的时候这些转换操作才开始计算.
这种设计可以使 Spark 运行起来更加的高效.
默认情况下, 你每次在一个 RDD 上运行一个action
的时候, 前面的每个transformed RDD
都会被重新计算.
但是我们可以通过persist (or cache)
方法来持久化一个 RDD 在内存中, 也可以持久化到磁盘上, 来加快访问速度. 后面有专门的章节学习这种持久化技术.
根据 RDD
中数据类型的不同, 整体分为 2 种 RDD
:
Value
类型Key-Value
类型(其实就是存一个二维的元组)