如何获取Databricks工作区所有笔记本列表并导出名称路径到CSV
Databricks工作区全量笔记本清单导出方案
Databricks CLI原生的databricks workspace list命令没有自带递归遍历参数,你可以通过以下两种方式实现全量笔记本信息采集并导出为CSV:
方案1:本地Shell脚本递归调用Databricks CLI
提前完成Databricks CLI的认证配置后,运行以下Shell脚本即可:
#!/bin/bash # 定义输出CSV文件路径 OUTPUT_CSV="databricks_notebooks.csv" # 写入CSV表头 echo "notebook_name,full_path" > "$OUTPUT_CSV" # 递归遍历工作区函数 traverse_workspace() { local current_path="$1" # 调用CLI获取当前路径下的所有对象,输出格式为<对象类型> <对象路径> databricks workspace list "$current_path" --output tsv | while read -r obj_type obj_path; do if [ "$obj_type" = "NOTEBOOK" ]; then # 提取笔记本名称 notebook_name=$(basename "$obj_path") # 写入CSV,添加双引号避免路径含逗号时格式错乱 echo "\"$notebook_name\",\"$obj_path\"" >> "$OUTPUT_CSV" elif [ "$obj_type" = "DIRECTORY" ]; then # 遇到目录递归遍历 traverse_workspace "$obj_path" fi done } # 从根路径开始遍历,可替换为你需要的指定目录,例如/Repos traverse_workspace "/" echo "导出完成,结果存储在当前目录下的 $OUTPUT_CSV"
注意事项:
- 执行前先运行
databricks workspace list /确认CLI和工作区连接正常 - 如果只需要遍历特定目录,将最后一行的
/替换为对应目录路径即可 - 若工作区对象数量较多,脚本运行时间会相应变长,请耐心等待
方案2:工作区笔记本内运行Python代码直接导出
如果不想配置本地CLI环境,可直接在Databricks工作区新建一个Python笔记本运行以下代码:
import csv from databricks.sdk import WorkspaceClient from databricks.sdk.service import workspace # 初始化工作区客户端,在工作区内运行无需额外配置认证 w = WorkspaceClient() # 定义CSV输出路径,存放在DBFS的FileStore目录方便下载 output_path = "/dbfs/FileStore/databricks_notebooks.csv" notebook_records = [] def traverse_workspace(path: str): for obj in w.workspace.list(path, recursive=False): if obj.object_type == workspace.ObjectType.NOTEBOOK: # 提取笔记本名称和完整路径 notebook_name = obj.path.split("/")[-1] notebook_records.append({ "notebook_name": notebook_name, "full_path": obj.path }) elif obj.object_type == workspace.ObjectType.DIRECTORY: # 递归遍历子目录 traverse_workspace(obj.path) # 从根路径开始遍历,可替换为指定目录 traverse_workspace("/") # 写入CSV文件 with open(output_path, "w", newline="", encoding="utf-8") as f: writer = csv.DictWriter(f, fieldnames=["notebook_name", "full_path"]) writer.writeheader() writer.writerows(notebook_records) print(f"导出完成,文件路径:{output_path},可通过工作区文件管理功能下载该文件")
注意事项:
- 运行该代码的账号需要有对应遍历目录的读权限
- 生成的文件可直接在工作区的「数据」-「DBFS」-「FileStore」目录下找到并下载
- 若不需要导出整个工作区,修改
traverse_workspace("/")中的根路径即可
内容的提问来源于stack exchange,提问作者Learn2Code
相关产品推荐
相关产品推荐

