并行化list.map用于并发rdd作业

时间:2015-12-03 23:27:28

标签: scala parallel-processing apache-spark

根据帖子 https://groups.google.com/forum/#!topic/spark-users/3QIn42VbQe0

此代码将所有作业直接提交给Spark的调度程序,并获得“Future”的列表。

val rdds: List[RDD[T]] = ...

val futures = rdds.map { rdd =>
  rdd.map(...).reduceByKey(...).collect()
}

我想知道添加.par是否可以加快速度,例如     rdds.par.map

或者,也许作者意味着每个地图条目只是一个火花作业提交,并按顺序运行它们同样快。

1 个答案:

答案 0 :(得分:0)

在提供的代码中,将按顺序评估RDD。在RDD上调用.collect时,将评估RDD转换并在驱动程序中收集结果。收集结果时会阻止驱动程序。

如果要将其更改为rdds.par.map { ... },则将.collect并行调用,并且将同时评估所有RDD。然后将其留给Spark调度机制来决定如何在RDD之间共享集群。