如何通过Azure Databricks笔记本将ADLS文件推送到Azure DevOps GIT仓库
可以通过编程方式在Azure Databricks笔记本中完成你提到的两个操作,以下是可直接落地的实现方案:
问题原因说明
你之前在笔记本内执行git clone失败,主要有两个原因:
- 没有配置Azure DevOps仓库的访问凭证
- 尝试克隆到DBFS目录时会有权限兼容问题,直接操作集群驱动节点的本地临时目录即可规避该问题,不需要依赖UI操作的Databricks Repos功能。
步骤1:从ADLS获取目标文件
你可以直接通过DBFS工具将ADLS中的文件复制到驱动节点的本地临时目录:
# 提前创建本地操作目录 dbutils.fs.mkdirs("file:/tmp/git_sync/") # 替换为你的ADLS文件路径,如果你已经挂载ADLS到/mnt/下,直接用挂载路径即可 # 未挂载ADLS时可直接用abfss路径:abfss://容器名@存储账号名.dfs.core.windows.net/文件路径 dbutils.fs.cp("/mnt/adls_target/path/xxx.csv", "file:/tmp/git_sync/xxx.csv")
步骤2:推送文件到Azure DevOps Git仓库
前置准备
提前在Azure DevOps中创建具备仓库读写权限的个人访问令牌(PAT),建议将PAT存入Databricks Secrets避免硬编码泄露。
执行Git操作
%sh # 安装Git(如果集群镜像未预装) apt update && apt install -y git # 配置Git全局信息 git config --global user.name "你的DevOps用户名" git config --global user.email "你的DevOps绑定邮箱" # 进入临时目录克隆仓库,替换占位符为你的实际信息 cd /tmp # PAT可通过dbutils.secrets.get("密钥域","密钥名")读取后动态拼接 git clone https://<你的PAT>@dev.azure.com/<组织名>/<项目名>/_git/<目标仓库名> # 移动文件到仓库目录、提交推送 cd /tmp/<目标仓库名> cp /tmp/git_sync/xxx.csv ./仓库内的目标存储路径/ git add . git commit -m "同步ADLS生成的csv文件" git push origin <目标分支名>
注意:所有
%sh命令默认仅在集群驱动节点执行,所有操作都在驱动节点本地目录完成即可,无需Worker节点参与。如果需要定期执行该流程,可以把该笔记本设置为定时作业。
内容的提问来源于stack exchange,提问作者romanzdk
相关产品推荐
相关产品推荐

