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

Azure Databricks DBFS/FileStore文件缓存问题:如何清除或禁用缓存?

解决Azure Databricks DBFS FileStore文件缓存问题

你遇到的是DBFS FUSE挂载的本地节点缓存导致旧文件内容残留的问题,以下是具体解决办法:

一、改用无缓存的读取方式

放弃使用Scala标准库的fromFile(依赖本地文件系统缓存),改用Databricks原生工具或Spark API读取:

  • 使用dbutils.fs读取(适合小文件)
    直接调用Databricks文件系统工具,绕过本地缓存:

    // 读取全部内容
    val contents = dbutils.fs.head(filepath)
    
    // 或逐行读取后拼接
    val lines = dbutils.fs.read(filepath).split("\n")
    val contents = lines.mkString("\n")
    
  • 使用Spark API读取(适合大文件)
    Spark读取接口直接从DBFS拉取最新内容,无本地缓存问题:

    import org.apache.spark.sql.functions._
    val df = spark.read.text(filepath)
    val contents = df.select(concat_ws("\n", collect_list("value"))).first().getString(0)
    

二、清除当前会话的缓存

如果已经使用标准库方法导致缓存,可通过以下方式刷新:

  • 刷新DBFS挂载缓存
    执行命令刷新所有挂载的文件系统缓存:

    dbutils.fs.refreshMounts()
    
  • 手动删除本地缓存文件
    DBFS通过FUSE挂载到节点的/dbfs/路径,删除本地缓存文件后会重新拉取最新内容:

    import java.io.File
    val localPath = s"/dbfs${filepath}" // 需确保filepath以/开头,如"/FileStore/test.txt"
    val cacheFile = new File(localPath)
    if (cacheFile.exists()) cacheFile.delete()
    
    // 重新读取
    val contents = scala.io.Source.fromFile(localPath).getLines.mkString("\n")
    

三、全局禁用DBFS缓存(长期生效)

编辑集群配置,在Spark配置中添加以下参数,集群重启后即可禁用DBFS文件缓存:

spark.databricks.dbfs.cache.enabled false

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 00:40:43