gpt4 book ai didi

caching - 在 spark streaming 中,我必须在 cache() 或 persist() 之后调用 count() 才能强制缓存/持久性真正发生吗?

转载 作者:行者123 更新时间:2023-12-05 01:18:40 24 4
gpt4 key购买 nike

正在观看 this关于 spark 内部结构的非常好的视频演示者说,除非在缓存后对 RDD 执行操作,否则缓存不会真正发生。

我从未见过 count() 在任何其他情况下被调用。所以,我猜他只是在 cache() 之后调用 count() 来强制持久化他给出的简单示例。不必每次在代码中调用 cache() 或 persist() 时都这样做。这是对的吗?

最佳答案

unless one performs an action on ones RDD after caching it caching will not really happen.

这是 100% 正确的。 cache/persist 方法只会将 RDD 标记为缓存。每当对 RDD 调用操作时,RDD 中的项目都会被缓存。

...only calling count() after cache() to force persistence in the simple example he is giving. It is not necessary to do this every time one calls cache() or persist() in one's code. Is this right ?

您再次 100% 正确。但我会详细说明这一点。

为了便于理解,请考虑以下示例。

rdd.cache()
rdd.map(...).flatMap(...) //and so on
rdd.count() //or any other action

假设您的 RDD 中有 10 个文档。当上面的代码片段运行时,每个文档都会执行这些任务:

  • 已缓存
  • map 功能
  • flatMap函数

另一方面,

rdd.cache().count()  
rdd.map(...).flatMap(...) //and so on
rdd.count() //or any other action

运行上面的代码片段时,首先缓存所有 10 个文档(整个 RDD)。然后应用map函数和flatMap函数。

都对,按要求使用。希望这能让事情变得更清楚。

关于caching - 在 spark streaming 中,我必须在 cache() 或 persist() 之后调用 count() 才能强制缓存/持久性真正发生吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43728505/

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