根据帖子 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
或者,也许作者意味着每个地图条目只是一个火花作业提交,并按顺序运行它们同样快。
答案 0 :(得分:0)
在提供的代码中,将按顺序评估RDD。在RDD上调用.collect
时,将评估RDD转换并在驱动程序中收集结果。收集结果时会阻止驱动程序。
如果要将其更改为rdds.par.map { ... }
,则将.collect
并行调用,并且将同时评估所有RDD。然后将其留给Spark调度机制来决定如何在RDD之间共享集群。