- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在这里阅读了很多关于数据帧上的 unpersist() 的问题和答案。到目前为止,我还没有找到这个问题的答案:
在 Spark 中,一旦我完成了一个数据帧,调用 .unpersist() 来手动强制该数据帧从内存中取消持久化,而不是等待 GC(这是一项昂贵的任务)是个好主意吗? 就我而言,我正在加载许多数据帧,以便我可以执行连接和其他转换。
因此,例如,如果我希望加载并加入 3 个数据帧 A、B 和 C:
我加载数据帧 A 和 B,加入这两个创建 X,然后 .unpersist() B 因为我不再需要它(但我将需要 A),并且可以使用内存加载 C(这是很大的)。然后我加载 C,并将 C 连接到 X,在 C 上使用 .unpersist() 这样我就有更多的内存用于我现在将在 X 和 A 上执行的操作。
我知道 GC 最终对我来说不会持久,但我也明白 GC 是一项昂贵的任务,应该尽可能避免。重新表述我的问题:这是手动管理内存以优化我的 Spark 作业的合适方法吗?
我的理解(如有错误请指正):
最佳答案
似乎有些误解。使用时 unpersist
是更好地控制存储的有效方法,它不会避免垃圾收集。事实上,所有与缓存数据相关的堆上对象都将被留在垃圾收集器中。
因此,虽然操作本身相对便宜,但它触发的一系列事件可能并不便宜。幸运的是,显式持久化并不比等待自动清理器或 GC 触发清理器更糟糕,因此如果您想清理特定对象,请继续执行。
要将 GC 限制为非持久化,可能值得查看 OFF_HEAP
StorageLevel
.
关于scala - 使用 .unpersist() 手动管理内存是个好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47331629/
我在这里阅读了很多关于数据帧上的 unpersist() 的问题和答案。到目前为止,我还没有找到这个问题的答案: 在 Spark 中,一旦我完成了一个数据帧,调用 .unpersist() 来手动强制
Spark 附带广播变量,这允许我们在每台机器上缓存一个只读变量,而不是随任务一起发送它的副本。 当然,当“广播变量”不再使用时,删除这个变量是很自然的。但是from the documentatio
如何取消在我没有引用的 MLlib 模型中生成的 RDD? 我知道在 pyspark 中,您可以使用 sqlContext.clearCache() 来取消所有数据帧的持久化,除了 scala API
我有一个 rdd 列表 List> . list 中的每个 rdd 都缓存在内存中。 现在我想删除其中一个列表项。我需要打电话吗 .unpersist()在它之前 .remove(index) ? 如
我正在使用来自 Spark 3.0 的结构化流。 我想做的是将数据写入多个接收器。我需要在 Kafka 中编写一些 DataFrame 以便在另一个进程中使用,并且还需要在 Cassandra 中存储
我有一个模型,其中一些实例需要保留。只有一些,而不是全部,因为持久化所有实例会很浪费。该模型有 primaryKey类型 Int 我需要能够将所有对象从后台传递到主线程,因为 Realm 对象只能由创
我正在构建一个 Spark Structured Streaming 应用程序,我正在其中执行批处理流连接。批处理数据的源会定期更新。 因此,我计划定期对该批处理数据进行持久化/非持久化。 下面是我用
我正在读取特定路径下的 csv 文件: spark.read.format('csv').load('/mnt/path/') 我正在缓存我的数据框以访问损坏的记录 enter link descri
我遇到了一个未知原因的Out Of Memeory错误,我立即释放了无用的RDD,但经过几轮循环后,仍然出现OOM错误。我的代码如下: // single source shortest path d
我是一名优秀的程序员,十分优秀!