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

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,添加以下步骤:
    1. 安装Databricks CLI:pip install databricks-cli
    2. 配置认证:通过Pipeline变量注入Databricks令牌,执行databricks configure --token --host <工作区URL>
    3. 运行备份脚本:执行本地编写的CLI导出脚本
    4. 上传至Blob:用Azcopy将备份文件推送到目标容器
    5. 状态通知:通过Pipeline任务发送备份结果邮件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 09:42:31