Apache Spark: map vs mapPartitions?

Qual é a diferença entre umRDD's map emapPartitions método? E fazflatMap Comportar-se comomap ou comomapPartitions? Obrigado.

(editar) ou seja, qual é a diferença (semanticamente ou em termos de execução) entre

  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)
  }

E:

  def map[A, B](rdd: RDD[A], fn: (A => B))
               (implicit a: Manifest[A], b: Manifest[B]): RDD[B] = {
    rdd.map(fn)
  }

questionAnswers(3)

yourAnswerToTheQuestion