gpt4 book ai didi

apache-spark - 当下一个 RDD 物化时,前一个 RDD 会发生什么?

转载 作者:行者123 更新时间:2023-12-04 05:07:32 25 4
gpt4 key购买 nike

在 spark 中,我想知道当下一个 RDD 实现时,前一个 RDD 会发生什么。

假设我有下面的scala代码

val lines = sc.textFile("/user/cloudera/data.txt")
val lineLengths = lines.map(s => s.length)
val totalLength = lineLengths.reduce((a, b) => a + b)

我有 linesRDD 是一个基本的 RDD 同样我有 linesLengths RDD

我知道这两个 RDD 在调用 reduce Action 时被具体化。

我的问题是,当数据流经这 2 个 RDD 时,当 linesLengthsRDD 实现时,lineRDD 会发生什么。

一旦 linesLengthsRDD 被具体化,那么 linesRDD 中的数据是否被删除?

假设在生产 Spark 作业中可能有 100 个 RDD,针对第 100 个 RDD 调用单个 Action。

当第 99 个 RDD 实现时,第 1 个 RDD 中的数据会发生什么变化?

所有 RDD 中的数据仅在各自的最终 Action 返回各自的输出时被删除?

或者

一旦 RDD 根据 DAG 将其数据传递到下一个 RDD,每个 RDD 中的数据会自动删除吗?

最佳答案

实际上,lines 和 lineLength 在 reduce 之后都会保留它们的 rdds。正如您提到的,您可以将 rdd 视为转换的 DAG。因此,如果稍后您想对 lines 或 lineLength 执行一些其他转换,则可以。即使它们在 reduce 期间具体化,除非您直接缓存它们,否则当在它们所属的 DAG 上调用另一个操作时,它们将再次运行它们的转换。

关于apache-spark - 当下一个 RDD 物化时,前一个 RDD 会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37178630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com