我有一个结构的火花代码:
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。
答案 0 :(得分:1)
是。你是对的。 transformations
上的所有RDD
都是lazily evaluated
,直到完成action
collect()
等save()
所有transformation
操作,例如map()
reduce()
生成physical and logical execution plans
,这些操作是在执行parent
时通过跟踪action
计划执行的。
您可以结帐JerryLead和JacekLaskowski了解详情。
我希望这很有用