1. map
1)函数签名
def map[U: ClassTag](f: T => U): RDD[U]
2)功能描述
函数f可以接收一个参数。当某个RDD执行map方法时,会遍历该RDD中的每一个数据项,并依次应用f函数,从而产生一个新的RDD。即,这个新RDD中的每一个元素都是原来RDD中每一个元素依次应用f函数而得到的。
3)简单案例
sc.makeRDD(1 to 4,2).map(_*2).foreach(println)
2.mapPartitions
1)函数签名
def mapPartitions[U: ClassTag](
f: Iterator[T] => Iterator[U],
preservesPartitioning: Boolean = false): RDD[U]
2)功能描述
函数f接收的是每个分区的数据归集到一起的集合列表,返回结果仍然是一个集合列表。
对每个分区中的数据执行map操作,这里的map是指对数据进行处理,不限于map,可以进行filter.take等对列表的各种操作。
其实分两步,第一步spark会将每个分区的数据归集到一个集合列表中,第二步,对每个集合列表进行操作,这就存在一个问题,如果数据量比较大,很可能发生OOM异常,所以生产环境一定要结合实际情况使用。