gpt4 book ai didi

apache-spark - Spark 是否会自动取消缓存并删除未使用的数据帧?

转载 作者:行者123 更新时间:2023-12-02 02:03:40 32 4
gpt4 key购买 nike

我有以下策略来更改数据帧df

df = T1(df)
df.cache()
df = T2(df)
df.cache()
.
.
.
df = Tn(df)
df.cache()

这里T1, T2, ..., Tn 是返回 Spark 数据帧的 n 个转换。使用重复缓存是因为 df 必须经过大量转换并在转换之间使用多次;如果不缓存转换的延迟评估,可能会导致使用 df 的速度非常慢。我担心的是,一一缓存的n个dataframe会逐渐消耗RAM。我读到 Spark 自动取消缓存“最近最少使用”的项目。基于此我有以下疑问 -

  1. “最近最少使用”参数是如何确定的?我希望没有附加任何引用或评估策略的数据框符合未使用的条件 - 我是对的吗?
  2. 没有附加引用和评估策略的 Spark 数据框是否也会被选择进行垃圾收集?或者 Spark 数据框永远不会被垃圾收集吗?
  3. 根据上述两个问题的答案,上述策略是否正确?

最佳答案

How is "least recently used" parameter determined? I hope that a dataframe, without any reference or evaluation strategy attached to it, qualifies as unused - am I correct?

结果缓存在 Spark 执行器上。单个执行器运行多个任务,并且在给定时间点其内存中可以有多个缓存。单个执行器缓 stub 据请求的时间进行排名。在某些计算中刚刚请求的缓存将始终具有排名1,而其他则被推低。最终,当可用空间已满时,最后一级的缓存将被删除,为新的缓存腾出空间。

Does a spark dataframe, having no reference and evaluation strategy attached to it, get selected for garbage collection as well? Or does a spark dataframe never get garbage collected?

Dataframe 是一个执行表达式,除非调用某个操作,否则不会实现任何计算。此外,一旦执行器完成该任务的计算,所有内容都将被清除。仅当数据帧被缓存时(在调用操作之前),结果才会保留在执行器内存中以供进一步使用。并且这些结果缓存是基于LRU来清除的。

Based on the answer to the above two queries, is the above strategy correct?

您的示例似乎是按顺序完成转换的,并且不再使用先前数据帧的引用(不知道您为什么使用缓存)。如果由同一个执行器执行多次执行,则可能会丢弃某些结果,并且在询问时将再次重新计算它们。

注意- 除非调用 Spark 操作,否则不会执行任何操作。调用操作时,Spark 引擎会链接并优化转换。

关于apache-spark - Spark 是否会自动取消缓存并删除未使用的数据帧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68692393/

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