def map[U: ClassTag](f: T => U): RDD[U] = {val cleanF = sc.clean(f)new MapPartitionsRDD[U, T](this, (context, pid, iter) => iter.map(cleanF))}RDD.scala里的這個方法里的context, pid, iter不知道從哪來的啊??https://github.com/apache/spark/blob/master/core/src/main/scala/org/apache/spark/rdd/RDD.scala
2 回答

慕勒3428872
TA貢獻1848條經(jīng)驗 獲得超6個贊
private[spark] class MapPartitionsRDD[U: ClassTag, T: ClassTag](
prev: RDD[T],
f: (TaskContext, Int, Iterator[T]) => Iterator[U], // (TaskContext, partition index, iterator)
preservesPartitioning: Boolean = false)
extends RDD[U](prev) {
override def compute(split: Partition, context: TaskContext): Iterator[U] =
f(context, split.index, firstParent[T].iterator(split, context))
}
方法的參數(shù)列表,傳入一個參數(shù)為(TaskContext, Int, Iterator[T])返回為Iterator[U]的函數(shù)作為MapPartitionsRDD的構(gòu)造函數(shù)的參數(shù)f,方法compute會調(diào)用這個方法。
- 2 回答
- 0 關(guān)注
- 1025 瀏覽
添加回答
舉報
0/150
提交
取消