Apache Spark:map与mapPartitions?

RDD map和mapPartitions方法之间有什么区别?并且flatMap表现得像map还是喜欢mapPartitions?谢谢。


(edit),即两者之间在语义上或执行上有什么区别


  def map[A, B](rdd: RDD[A], fn: (A => B))

               (implicit a: Manifest[A], b: Manifest[B]): RDD[B] = {

    rdd.mapPartitions({ iter: Iterator[A] => for (i <- iter) yield fn(i) },

      preservesPartitioning = true)

  }

和:


  def map[A, B](rdd: RDD[A], fn: (A => B))

               (implicit a: Manifest[A], b: Manifest[B]): RDD[B] = {

    rdd.map(fn)

  }


慕的地6264312
浏览 554回答 3
3回答

守着一只汪

RDD的map和mapPartitions方法之间有什么区别?方法映射通过应用函数将源RDD的每个元素转换为结果RDD的单个元素。mapPartitions将源RDD的每个分区转换为结果的多个元素(可能没有)。flatMap的行为类似于map还是mapPartitions?flatMap都不对单个元素(如map)工作,也不产生结果的多个元素(如mapPartitions)。
打开App,查看更多内容
随时随地看视频慕课网APP