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

如何获取Databricks保存的文件名并对接Azure Data Factory使用

实现方案

方案1:按需求通过Notebook输出参数传递动态文件名

步骤1:Databricks侧配置输出参数

  • 生成动态parquet文件名并写入ADLS时,先将完整文件路径/文件名存入变量,示例:
# 动态文件名可按时间戳、业务ID、管道运行ID等规则生成
dynamic_parquet_path = "abfss://你的容器名@存储账号名.dfs.core.chinacloudapi.cn/自定义路径/动态文件名.parquet"
# 写入Parquet的逻辑
df.write.parquet(dynamic_parquet_path)
# 输出路径给ADF
dbutils.notebook.exit(dynamic_parquet_path)

步骤2:Azure Data Factory侧配置

  • 在ADF管道中添加Databricks Notebook活动调用上述Notebook,活动运行完成后,返回的文件路径可通过表达式@activity('你的Databricks活动名称').output.runOutput获取
  • 配置复制活动:源数据集选择ADLS的Parquet格式,将数据集的文件路径设为参数,在复制活动的源配置页,把上一步获取的路径值传入该参数
  • 接收器选择目标数据库表数据集,正常配置字段映射规则即可运行。

方案2:更优的低容错方案(无需手动传递参数)

如果你的业务场景允许调整存储规则,推荐用该方案,避免参数传递异常导致的同步失败:

  • 调整Databricks的输出规则:每次运行生成的Parquet文件统一存入独立的分区文件夹下,比如路径规则为/输出根路径/run_id=xxx/,run_id可以用ADF管道运行ID或者Databricks作业运行ID,保证每次运行的文件夹唯一
  • 复制活动的源直接配置通配符匹配该分区路径下的所有Parquet文件,路径可通过ADF表达式直接拼接,示例:@concat('/输出根路径/run_id=', pipeline().RunId, '/*.parquet'),无需Databricks返回文件名
  • 也可以搭配ADLS存储事件触发规则,只要新的Parquet文件写入完成就自动触发同步管道,完全无需手动管理文件名。

注意事项

  • 如果Spark写出的是多个分片的Parquet文件(part-xxx开头的多个文件),可以配置复制活动直接读取整个文件夹路径下的所有Parquet文件,ADF会自动合并同结构的Parquet数据写入目标表
  • 路径和文件名尽量避免使用特殊字符,防止解析失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 12:15:05