例如,我在代码中创建了两个RDD,如下所示:
val rdd1=sc.esRDD("userIndex1/type1")
val rdd2=sc.esRDD("userIndex2/type2")
val rdd3=rdd1.join(rdd2)
rdd3.foreachPartition{....}
Run Code Online (Sandbox Code Playgroud)
我发现它们是串行执行的,为什么Spark不并行运行它们?我的问题的原因是网络非常慢,生成rdd1需要1小时,生成rdd2也需要1小时。所以我问为什么Spark不同时生成两个RDD。
Spark提供了异步操作来异步运行所有作业,因此在用例中以并行+并发方式运行所有计算可能会有所帮助。一次只能在Spark集群中计算一个RDD,但您可以使它们异步。您可以在这里https://spark.apache.org/docs/2.0.0/api/java/org/apache/spark/rdd/AsyncRDDActions.html查看此api的Java文档
还有一个关于它的博客,请在这里查看:https://blog.knoldus.com/2015/10/21/demystifying-asynchronous-actions-in-spark/
| 归档时间: |
|
| 查看次数: |
2979 次 |
| 最近记录: |