如何在Azure Databricks与Azure DevOps中从QA环境复制CSV文件到Dev环境
可行的数据复制方案
方案1:Databricks Notebook 临时手动复制
适合一次性快速恢复的场景,直接在Databricks中执行文件复制操作:
- 确认QA和Dev环境的存储路径(如ADLS Gen2的
abfss://container@storageaccount.dfs.core.windows.net/path/) - 在Databricks Notebook中执行以下命令:
# 可选:列出QA环境下需要恢复的CSV文件,用于确认文件列表 dbutils.fs.ls("abfss://qa-container@qastorage.dfs.core.windows.net/target-csv-path/") # 复制单个CSV文件 dbutils.fs.cp("abfss://qa-container@qastorage.dfs.core.windows.net/target-csv-path/file1.csv", "abfss://dev-container@devstorage.dfs.core.windows.net/target-csv-path/file1.csv") # 批量复制目录下所有CSV文件 dbutils.fs.cp("abfss://qa-container@qastorage.dfs.core.windows.net/target-csv-path/", "abfss://dev-container@devstorage.dfs.core.windows.net/target-csv-path/", recurse=True) - 注意:确保运行Notebook的集群拥有QA存储的读取权限、Dev存储的写入权限(通过SAS密钥或Service Principal配置)
方案2:Azure DevOps Pipeline 自动化复制
适合需要重复执行、审计追踪或符合CI/CD流程的场景:
方式A:使用Azure CLI任务
- 创建Service Principal,赋予它QA存储的读取权限和Dev存储的写入权限
- 在DevOps Pipeline中配置Azure资源服务连接,关联该Service Principal
- 添加Azure CLI任务,执行以下命令:
# 复制单个CSV文件 az storage blob copy start --source-account-name qastorage --source-container qa-container --source-blob target-csv-path/file1.csv --destination-account-name devstorage --destination-container dev-container --destination-blob target-csv-path/file1.csv # 批量复制目录下所有CSV文件 az storage blob list --account-name qastorage --container-name qa-container --prefix target-csv-path/ --query "[?ends_with(name, '.csv')].name" -o tsv | while read blob; do az storage blob copy start --source-account-name qastorage --source-container qa-container --source-blob $blob --destination-account-name devstorage --destination-container dev-container --destination-blob $blob done
方式B:调用Databricks Notebook执行复制
- 将方案1的Notebook逻辑固化,确保参数可配置(如路径参数化)
- 在DevOps中配置Databricks服务连接
- 添加「Databricks Notebook」任务,指定要运行的复制Notebook路径,配置集群参数
- 可设置Pipeline为手动触发,或绑定到Dev环境文件缺失的告警事件
方案3:结合Azure Data Factory(可选)
如果已有ADF资源,可通过复制流水线实现,再用DevOps触发:
- 在ADF中创建复制活动,源数据集指向QA存储的CSV文件,目标数据集指向Dev存储
- 配置过滤规则(如仅复制指定后缀的CSV文件)
- 在DevOps Pipeline中添加Azure PowerShell任务,触发ADF流水线:
Invoke-AzDataFactoryV2Pipeline -ResourceGroupName "rg-name" -DataFactoryName "adf-name" -PipelineName "copy-csv-from-qa-to-dev"
内容的提问来源于stack exchange,提问作者user21492560
相关产品推荐
相关产品推荐

