是否对火花变量进行了懒惰评估?

时间:2017-05-23 03:22:33

标签: scala apache-spark

我有一个结构的火花代码:

val a:RDD = readData.someOperations()
a.cache()
val b = a.someOperations1()
val c = a.someOperations2()
val d = a.someOperations3()
val e = a.someOperations4()
a.unpersist()

更多RDD中的其他一些代码(本节中缓存了其他RDD,并评估了其他val)。

将变量写入磁盘(a,b,c,d,e等)

我想知道varibales是在定义它们的位置计算还是仅在写入磁盘时计算。我担心如果仅在写入磁盘时对它们进行评估,那么我将同时缓存更多的RDD。

1 个答案:

答案 0 :(得分:1)

是。你是对的。 transformations上的所有RDD都是lazily evaluated,直到完成action collect()save()

所有transformation操作,例如map() reduce()生成physical and logical execution plans,这些操作是在执行parent时通过跟踪action计划执行的。

您可以结帐JerryLeadJacekLaskowski了解详情。

我希望这很有用