Spark map与mapPartitions算子源码级深度解析
一、核心源码结构差异
1. map算子实现逻辑
def map[U: ClassTag](f: T => U): RDD[U] = withScope {
val cleanF = sc.clean(f)
new MapPartitionsRDD[U, T](this, (context, pid, iter) => iter.map(cleanF))
}
实现特征:
- 传入函数
f
类型为T => U
,处理单个元素
- 底层创建
MapPartitionsRDD
时,通过iter.map(clean