Scala spark变量是否被延迟评估?

Scala spark变量是否被延迟评估?,scala,apache-spark,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和其他) 我想知

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

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和其他)


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

是的。你说得对。
RDD
上的所有
转换
都是
惰性评估的
,直到执行
操作
,如
collect()
save()

所有
转换
操作,如
map()
reduce()
生成
物理和逻辑执行计划
,在执行
操作
时,通过跟踪
父项
计划来执行

您可以结帐并查看更多详细信息

我希望这是有帮助的