gpt4 book ai didi

apache-spark - 谁能解释一下执行程序中的 rdd block

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

谁能解释为什么当我第二次运行 spark 代码时 rdd block 在增加,即使它们在第一次运行时存储在 spark 内存中。我正在使用线程提供输入。rdd block 的确切含义是什么。

最佳答案

我今天一直在研究这个,似乎RDD block 是RDD block 和非RDD block 的总和。查看代码: https://github.com/apache/spark/blob/master/core/src/main/scala/org/apache/spark/ui/exec/ExecutorsPage.scala

 val rddBlocks = status.numBlocks

如果您转到 Github 上 Apache Spark Repo 的以下链接: https://github.com/apache/spark/blob/d5b1d5fc80153571c308130833d0c0774de62c92/core/src/main/scala/org/apache/spark/storage/StorageUtils.scala

您会发现以下代码行:

      /**
* Return the number of blocks stored in this block manager in O(RDDs) time.
*
* @note This is much faster than `this.blocks.size`, which is O(blocks) time.
*/
def numBlocks: Int = _nonRddBlocks.size + numRddBlocks

非 rdd block 是由广播变量创建的,因为它们作为缓存 block 存储在内存中。任务由驱动程序通过广播变量发送给执行程序。现在这些系统创建的广播变量通过 ContextCleaner 服务被删除,因此相应的非 RDD block 被删除。RDD block 通过 rdd.unpersist() 取消持久化。

关于apache-spark - 谁能解释一下执行程序中的 rdd block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38067919/

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