You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Databricks集群缓存占用过高:如何完全禁用或缩减缓存

问题描述

当前Spark集群中“已用”内存仅约16GB,但缓存内存占用过高,导致不得不使用64GB的计算资源。已尝试执行以下代码禁用IO缓存:
spark.conf.set("spark.databricks.io.cache.enabled", "false")
操作后缓存内存有所减少,但仍有大量残留,需要完全禁用缓存或进一步降低缓存占用的方法。

解决方法
  • 禁用核心缓存机制
    Spark的RDD/DataSet主动缓存(cache()/persist())和IO缓存相互独立,若代码中存在主动缓存操作,需处理:

    1. 移除代码里的df.cache()、rdd.persist()这类主动缓存调用。
    2. 运行时清除已缓存数据:
      spark.catalog.clearCache()
      
    3. 关闭自动广播表缓存:
      spark.conf.set("spark.sql.autoBroadcastJoinThreshold", -1)
  • 限制缓存内存上限
    通过调整内存分配参数压缩缓存可用空间:

    • 调低存储与执行内存的总占比(默认0.6):
      spark.conf.set("spark.memory.fraction", 0.2)
    • 调低存储内存中缓存的预留比例(默认0.5):
      spark.conf.set("spark.memory.storageFraction", 0.1)
  • 处理隐性缓存
    排查内置功能或第三方库的隐性缓存:

    • 禁用Delta Lake缓存:
      spark.conf.set("spark.databricks.delta.cache.enabled", "false")
    • 清除表缓存:
      -- 清除指定表缓存
      UNCACHE TABLE table_name;
      -- 清除所有表缓存
      UNCACHE TABLES;
      
  • 彻底释放缓存
    若上述操作无效,重启Spark会话或集群可完全释放所有缓存占用的内存。

内容的提问来源于stack exchange,提问作者Manav Karthikeyan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 21:53:18