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

使用dbx CLI部署Databricks工作流:冗余Artifact清理与复用问题

关于dbx CLI部署后DBFS冗余Artifact文件夹的处理方案

背景说明

我正在使用dbx CLI将工作流部署至Databricks平台,当前.dbx/project.json配置如下:

{
    "environments": {
        "default": {
            "profile": "test",
            "storage_type": "mlflow",
            "properties": {
                "workspace_directory": "/Shared/dbx/projects/test",
                "artifact_location": "dbfs:/dbx/test"
            }
        }
    },
    "inplace_jinja_support": false,
    "failsafe_cluster_reuse_with_assets": false,
    "context_based_upload_for_execute": false
}

每次执行dbx deploy ...命令时,任务脚本都会被存储到DBFS的哈希命名文件夹中,多次部署会生成大量冗余文件夹,仅需保留最新的Artifact文件夹,旧文件夹已无使用价值。

问题与解决方案

1. 如何清理冗余的文件夹?

有两种可行方式:

  • 手动清理:
    用Databricks CLI执行命令列出目标路径下的所有哈希文件夹:
    databricks dbfs ls dbfs:/dbx/test
    
    再用递归删除命令清理指定旧文件夹:
    databricks dbfs rm -r dbfs:/dbx/test/<哈希文件夹名>
    
    也可以直接在Databricks UI的DBFS浏览器中手动选中并删除冗余文件夹。
  • 自动化脚本清理:
    编写Python脚本调用Databricks CLI或API,遍历目标路径下的文件夹,按修改时间排序后删除除最新之外的所有文件夹。核心逻辑:
    1. 执行databricks dbfs ls --long dbfs:/dbx/test获取带修改时间的文件夹列表
    2. 解析输出,提取文件夹名称和修改时间
    3. 按修改时间倒序排序,保留最新的1个,删除其余

2. 是否存在保留最近X个文件夹的保留策略或滚动策略?

dbx CLI本身没有内置的滚动保留策略,但可以通过自定义脚本+部署钩子实现:

  • 编写清理脚本,逻辑为:遍历目标路径下的文件夹,按修改时间倒序排序,保留前X个,删除剩余文件夹
  • 将脚本集成到部署流程中:比如在dbx deploy命令后执行该脚本,或者在CI/CD流水线(如GitHub Actions、GitLab CI)中添加步骤,每次部署完成后自动触发清理

3. 是否可以在每次部署时复用同一个文件夹?

可以实现,有两种方式:

  • 方式一:修改配置文件
    将.dbx/project.json中的storage_type从mlflow改为dbfs,并保持artifact_location为固定路径(如dbfs:/dbx/test/fixed-deploy)。此时dbx会将资产上传到指定的固定路径,每次部署会覆盖原有文件,实现文件夹复用。
  • 方式二:部署时指定固定路径
    执行部署命令时添加--artifact-path参数,强制指定上传到固定路径:
    dbx deploy --environment default --artifact-path dbfs:/dbx/test/fixed-deploy
    
    该方式无需修改配置文件,每次部署都会覆盖指定路径下的文件,达到复用效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 06:50:53