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

如何以编程方式自动化导出Azure Databricks工作区所有笔记本?

可以自动化导出Azure Databricks所有笔记本

完全可以通过编程实现步骤(1)的自动化,以下是几种常用的实现方式,你可以根据技术栈选择:

方法1:使用Databricks REST API

通过Databricks的Workspace API可以直接遍历并导出笔记本,核心是两个API:workspace/list(遍历目录)和workspace/export(导出内容)。如果只需要笔记本的元数据(路径、修改时间等),用workspace/list就足够。

步骤与示例

  1. 获取Databricks工作区的访问令牌(个人访问令牌或服务主体令牌)
  2. 调用API遍历所有笔记本:
# 配置工作区地址和令牌
export DATABRICKS_HOST="https://<你的工作区URL>"
export DATABRICKS_TOKEN="<你的访问令牌>"

# 递归列出根目录下所有笔记本,过滤出NOTEBOOK类型
curl -X GET "$DATABRICKS_HOST/api/2.0/workspace/list?path=/" \
  -H "Authorization: Bearer $DATABRICKS_TOKEN" \
  | jq '.objects[] | select(.object_type == "NOTEBOOK") | {path: .path, modified_time: .modified_time, language: .language}'
  1. (可选)导出单个笔记本内容:
curl -X GET "$DATABRICKS_HOST/api/2.0/workspace/export?path=/路径/到/笔记本&format=SOURCE" \
  -H "Authorization: Bearer $DATABRICKS_TOKEN" \
  > notebook-source.py

方法2:使用Databricks CLI

Databricks CLI是官方的命令行工具,封装了REST API,使用更简便。

步骤与示例

  1. 安装并配置CLI:
pip install databricks-cli
databricks configure --token  # 输入工作区URL和访问令牌
  1. 递归列出所有笔记本路径:
databricks workspace list / --recursive | grep -E "\.(py|scala|sql|r)$" > all-notebooks.txt
  1. (可选)批量导出所有笔记本到本地:
mkdir -p exported-notebooks
while read path; do
  local_path="./exported-notebooks${path}"
  mkdir -p "$(dirname "$local_path")"
  databricks workspace export "$path" "$local_path"
done < all-notebooks.txt

方法3:使用Python SDK(databricks-sdk)

适合用Python做自动化脚本的场景,能直接整合后续的对比、导出Excel/Power BI的逻辑。

步骤与示例代码

  1. 安装SDK:
pip install databricks-sdk pandas
  1. 编写脚本收集笔记本元数据并导出:
from databricks.sdk import WorkspaceClient
from databricks.sdk.service import workspace
import pandas as pd

# 初始化客户端
w = WorkspaceClient(host="https://<你的工作区URL>", token="<你的访问令牌>")

def recursive_list_notebooks(path: str = "/"):
    notebooks = []
    for obj in w.workspace.list(path=path):
        if obj.object_type == workspace.ObjectType.NOTEBOOK:
            notebooks.append({
                "notebook_path": obj.path,
                "language": obj.language.name,
                "last_modified_timestamp": obj.modified_time,
                "last_modified": pd.to_datetime(obj.modified_time, unit='ms')
            })
        elif obj.object_type == workspace.ObjectType.DIRECTORY:
            notebooks.extend(recursive_list_notebooks(obj.path))
    return notebooks

# 获取所有笔记本元数据
all_notebooks = recursive_list_notebooks()

# 保存为CSV,直接导入Excel或Power BI
df = pd.DataFrame(all_notebooks)
df.to_csv("databricks_notebooks_metadata.csv", index=False)

# (可选)批量导出笔记本内容
# for nb in all_notebooks:
#     content = w.workspace.export(path=nb["notebook_path"], format=workspace.ExportFormat.SOURCE)
#     local_path = f"./exported/{nb['notebook_path'].lstrip('/').replace('/', '_')}.py"
#     with open(local_path, "w") as f:
#         f.write(content)

注意事项

  • 如果你只是为了识别闲置笔记本,不需要导出笔记本内容,仅收集笔记本的路径、最后修改时间等元数据即可,再和Log Analytics中的运行记录做关联,筛选出x天内无运行记录的笔记本。
  • 确保使用的令牌有足够的权限(至少需要Workspace Read权限)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 22:55:48