【发布时间】:2016-05-24 18:57:26
【问题描述】:
例如,我在代码中创建了两个 RDD,如下所示:
val rdd1=sc.esRDD("userIndex1/type1")
val rdd2=sc.esRDD("userIndex2/type2")
val rdd3=rdd1.join(rdd2)
rdd3.foreachPartition{....}
我发现它们是串行执行的,为什么 Spark 不并行运行它们呢? 我的问题的原因是网络很慢,生成 rdd1 需要 1 小时,生成 rdd2 也需要 1 小时。所以我问为什么Spark没有同时生成两个RDD。
【问题讨论】:
-
您对这里有什么期望。这段代码实际上并没有做任何事情。如果您执行异步操作,则通常意味着没有足够的资源。
-
Spark 以您编写的方式执行您的代码。如果您想对一个 RDD 执行操作,该操作将产生另一个并与您的第二个 RDD 一起使用(例如加入),那么您的第二个 RDD 将等待前一个操作完成。
标签: apache-spark