mapPartitions/mapPartitionsWithIndex
这两个transform中:mapPartitions与map的区别是map中是对每个partition中的iterator执行map操作,对map过程中的每一条record进行传入的function的处理,而mapPartitions是把partition中整个iterator传给function进行处理.如果是map操作,你并不能知道这个iterator什么时候结束,但mapPartitions时给你的是一个iterator,所以你的函数中知道这个iterator什么时候会结束.而mapPartitionsWithIndex的函数是在mapPartitions的基础上,多了一个传入参数,这个传入参数就是对应的partition的index.
mapPartitions的函数定义:
def mapPartitions[U: ClassTag](
这个函数的定义部分为一个参数,是对应partition的数据的iterator,
f: Iterator[T] => Iterator[U]