Azure Databricks备份至Azure Blob Storage的方法及定期自动化方案咨询
Azure Databricks 备份方案指南
一、可行的备份方式
- 工作区核心对象备份:覆盖笔记本、集群配置、作业定义、已安装库、MLflow实验/模型等,通过Databricks CLI或REST API实现导出
- 业务数据备份:针对挂载的ADLS/Blob存储中的结构化(Delta Lake)、非结构化数据,直接通过存储复制或Databricks脚本完成备份
- 元数据备份:包含Hive元数据、Delta Lake事务日志,通过元数据导出命令或复制日志目录实现
- 集群环境备份:若使用自定义镜像,备份Azure Compute Gallery中的镜像;无自定义镜像则导出集群配置JSON,用于快速重建
二、备份至Azure Blob Storage的具体方法
1. 工作区对象(笔记本、作业)备份
方式1:Databricks CLI + Azcopy
先完成CLI安装与认证:
pip install databricks-cli databricks configure --token # 输入Databricks工作区URL与个人访问令牌
导出笔记本到本地,再上传至Blob:
# 导出指定路径下的所有笔记本为DBC格式 databricks notebooks export_dir /Production ./temp-backup --format DBC # 用Azcopy上传到Blob Storage azcopy copy "./temp-backup/*" "https://<storage-account>.blob.core.windows.net/<backup-container>/notebooks/" --recursive
方式2:Databricks笔记本内直接操作
通过API与dbutils完成导出+上传:
import os from databricks_cli.sdk.api_client import ApiClient from databricks_cli.notebooks.api import NotebookApi # 初始化API客户端(可通过环境变量注入令牌) api_client = ApiClient(host=os.environ['DATABRICKS_HOST'], token=os.environ['DATABRICKS_TOKEN']) notebook_api = NotebookApi(api_client) def export_to_blob(source_notebook_path, blob_mount_path): # 遍历导出所有子目录笔记本 for item in notebook_api.list_notebooks(source_notebook_path): if item['object_type'] == 'NOTEBOOK': nb_content = notebook_api.export_notebook(item['path'], format='DBC') dest_path = f"{blob_mount_path}/backups/notebooks{item['path']}.dbc" dbutils.fs.put(dest_path, nb_content, overwrite=True) # 替换为你的源路径与已挂载的Blob容器路径 export_to_blob('/Production', '/mnt/backup-storage')
2. Delta Lake数据备份
全量备份
直接复制Delta表的完整目录到Blob:
# 源Delta表路径 -> 备份Blob路径 dbutils.fs.cp('dbfs:/mnt/prod-data/sales', 'dbfs:/mnt/backup-storage/delta-backups/sales', recurse=True)
增量备份(基于事务日志)
仅备份最新版本的事务日志与新增数据文件:
# 获取Delta表最新版本 latest_version = spark.sql("DESCRIBE HISTORY sales").select("version").first()[0] # 复制最新日志文件 dbutils.fs.cp( f'dbfs:/mnt/prod-data/sales/_delta_log/{latest_version}.json', f'dbfs:/mnt/backup-storage/delta-backups/sales/_delta_log/', recurse=False ) # 复制新增数据文件(需结合日志解析,示例取最新版本对应的文件) new_files = spark.sql(f"SELECT path FROM delta.`dbfs:/mnt/prod-data/sales` VERSION AS OF {latest_version}").collect() for file in new_files: dbutils.fs.cp(file['path'], f'dbfs:/mnt/backup-storage/delta-backups/sales/{file["path"].split("/")[-1]}')
3. Hive元数据备份
使用Databricks内置命令导出元数据到Blob:
EXPORT METADATA OVERWRITE TO 'dbfs:/mnt/backup-storage/metadata-backup/hive-prod' FOR DATABASE prod_db INCLUDE TABLES, VIEWS, FUNCTIONS
三、备份流程定期自动化
1. Databricks Job调度
- 创建新Job,选择备份用的笔记本作为任务,配置运行集群(按需选择规格)
- 在Job调度设置中,选择Recurrence,设置执行周期(如每日凌晨2点)
- 开启任务告警:配置邮件/Teams通知,当任务失败或超时触发提醒
2. Azure Logic Apps自动化
- 创建Logic Apps工作流,触发条件设为Recurrence(如每日一次)
- 添加Databricks - Run Job动作,选择已创建的备份Job
- 新增Azure Blob Storage - List Blobs动作,验证备份目录是否生成新文件
- 配置失败分支:发送邮件/Teams消息通知运维人员
3. Azure DevOps Pipeline定时执行
- 创建定时触发的Pipeline,添加以下步骤:
- 安装Databricks CLI:
pip install databricks-cli - 配置认证:通过Pipeline变量注入Databricks令牌,执行
databricks configure --token --host <工作区URL> - 运行备份脚本:执行本地编写的CLI导出脚本
- 上传至Blob:用Azcopy将备份文件推送到目标容器
- 状态通知:通过Pipeline任务发送备份结果邮件
- 安装Databricks CLI:
内容的提问来源于stack exchange,提问作者Kartheek
相关产品推荐
相关产品推荐

