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

Databricks:如何清除指定根目录下所有Notebook的所有单元格输出

批量清除Databricks Notebook单元格输出的可行方案

你可以通过以下两种方式,实现从指定根目录(含整个实例、指定目录及子目录)下批量清除所有Notebook的单元格输出:

方法一:用Databricks CLI + Shell脚本批量处理

  1. 先完成Databricks CLI的配置(执行databricks configure完成认证)
  2. 编写如下shell脚本(命名为clear_notebook_outputs.sh),替换TARGET_DIR为你的目标路径:
#!/bin/bash

# 替换为你的目标根目录,"/"代表整个实例,也可以指定具体目录如"/Users/xxx/projects"
TARGET_DIR="/"

# 递归遍历所有Notebook路径
databricks workspace ls -r "$TARGET_DIR" | while read -r path; do
  # 过滤出Notebook(跳过目录)
  if databricks workspace info "$path" | grep -q "NOTEBOOK"; then
    echo "正在清除: $path"
    # 通过导出再覆盖导入的方式清除输出(DBC格式不含输出)
    databricks workspace export -f "$path" -t DBC /tmp/temp_notebook.dbc
    databricks workspace import -f /tmp/temp_notebook.dbc -t DBC -o "$path"
    rm /tmp/temp_notebook.dbc
  fi
done

执行脚本前赋予执行权限:chmod +x clear_notebook_outputs.sh,然后运行即可。

方法二:用Databricks Workspace API + Python脚本

如果你更偏好Python,可调用Workspace API实现:

import requests

# 替换为你的实例地址、个人令牌和目标目录
DATABRICKS_HOST = "https://your-databricks-instance.cloud.databricks.com"
DATABRICKS_TOKEN = "your-personal-access-token"
TARGET_DIR = "/"

headers = {"Authorization": f"Bearer {DATABRICKS_TOKEN}"}

def get_all_notebooks(path):
    """递归获取指定目录下所有Notebook路径"""
    notebooks = []
    list_url = f"{DATABRICKS_HOST}/api/2.0/workspace/list"
    resp = requests.post(list_url, headers=headers, json={"path": path})
    if resp.ok:
        for item in resp.json().get("objects", []):
            if item["object_type"] == "NOTEBOOK":
                notebooks.append(item["path"])
            elif item["object_type"] == "DIRECTORY":
                notebooks.extend(get_all_notebooks(item["path"]))
    return notebooks

def clear_single_notebook(path):
    """清除单个Notebook的输出"""
    # 导出不带输出的Notebook(DBC格式)
    export_url = f"{DATABRICKS_HOST}/api/2.0/workspace/export"
    export_resp = requests.get(export_url, headers=headers, params={"path": path, "format": "DBC"})
    if export_resp.ok:
        # 覆盖导入原Notebook
        import_url = f"{DATABRICKS_HOST}/api/2.0/workspace/import"
        import_resp = requests.post(
            import_url,
            headers=headers,
            json={"path": path, "format": "DBC", "overwrite": True},
            data=export_resp.content
        )
        print(f"成功清除: {path}" if import_resp.ok else f"清除失败: {path} - {import_resp.text}")

# 执行批量清除
all_notebooks = get_all_notebooks(TARGET_DIR)
for nb_path in all_notebooks:
    clear_single_notebook(nb_path)

注意:需要先安装requests库(pip install requests),且个人令牌需具备Workspace的读、写权限。

重要提醒

  • 操作前务必备份关键Notebook,防止意外
  • 确保使用的身份凭证有足够权限
  • 全实例范围的操作耗时较长,建议在业务低峰期执行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 23:43:14