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

能否从Azure Data Factory访问Databricks DBFS?DBFS内数据复制咨询

解决DBFS文件复制的正确姿势

这问题我之前帮同事处理过,核心原因是你选的Azure Delta Storage数据集是专门为Delta Lake表设计的,它会强制校验源/目标是否是标准Delta表,自然没法处理DBFS上的普通持久化文件。要实现DBFS到DBFS的文件复制,有两个直接可行的方案:


方案1:直接访问DBFS底层存储(推荐)

DBFS的持久化存储本质上都是挂载在Azure Blob Storage或ADLS Gen2上的(除了集群本地临时存储)。你可以跳过Databricks,直接在Data Factory里配置对应的存储连接器:

  • 先在Databricks里确认DBFS路径对应的底层存储:运行dbutils.fs.mounts()查看挂载信息,或者用dbutils.fs.ls("dbfs:/your/target/path")查看路径属性
  • 在Data Factory里创建Azure Blob Storage或ADLS Gen2类型的数据集,用存储账户密钥、SAS令牌或服务Principal完成授权
  • 直接填写DBFS对应的底层存储路径(比如abfss://container@storageaccount.dfs.core.windows.net/data/对应dbfs:/mnt/adls/data/)
  • 最后用Copy Data Activity连接这两个数据集,就能像复制普通存储文件一样完成DBFS文件的迁移,完全不需要依赖Databricks集群表

方案2:用Databricks Notebook活动完成复制

如果没法直接访问底层存储,你可以在Data Factory里调用Databricks Notebook活动,用PySpark代码直接操作DBFS路径:

# 示例:递归复制DBFS目录下的所有文件
dbutils.fs.cp("dbfs:/source/folder/", "dbfs:/target/folder/", recurse=True)

# 单个文件复制
dbutils.fs.cp("dbfs:/source/file.parquet", "dbfs:/target/file.parquet")
  • 这个方法完全基于DBFS原生路径操作,不需要关心底层存储细节
  • 还能在Notebook里添加自定义逻辑(比如过滤特定后缀的文件、重命名等)
  • 在Data Factory管道里添加这个Notebook活动,就能替代Copy Data Activity完成复制任务

避坑提示

绝对不要用Azure Delta Storage数据集处理非Delta表的文件,它的内置校验逻辑一定会报你遇到的“不是Delta表”错误。优先用方案1,性能和可靠性都更好;方案2适合有自定义需求的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 19:57:30