【发布时间】:2016-10-25 02:19:37
【问题描述】:
假设我有这样的代码,其中 x 是一个 RDD。
val a = x.map(...)
val b = x.map(...)
val c = x.map(...)
....
// a, b and c are used later on
出于某种原因,我希望 b 仅在 a 执行完成后执行,而 c 仅在执行 for 后执行b 已完成。有没有办法在 Spark 中强制这种依赖关系?
其次,Spark 执行此类代码的默认机制是什么。 a、b 和 c 是否会并行执行,因为它们之间没有依赖关系?
【问题讨论】:
-
什么是
x?如果他们常规的 scala 仿函数将一个接一个地执行。 -
x 只是一个 RDD。
-
有文件吗?这类东西通常决定了事情的运作方式。
-
stackoverflow.com/a/31384084/2784721,是的,它们将并行执行,您需要在地图操作结束时添加操作/终端功能。 Spark 很懒惰。顺便说一句,这是什么原因。
标签: scala apache-spark