如何在ADF Pipeline中逐个向Databricks Notebook传递多文件
解决ADF Pipeline嵌套XML文件逐个传递给Databricks Notebook的方案
核心实现逻辑
通过ADF的For Each串行执行配合文件筛选、排序,实现按嵌套文件夹顺序逐个将XML文件路径传递给固定逻辑的Databricks Notebook。
分步操作指南
1. 确认Get Metadata的输出完整性
你已完成Get Metadata活动配置,需确保:
Field List勾选了childItems,能获取目标路径landing/Datasource下所有层级的文件和文件夹- 根路径设置准确,覆盖所有嵌套的日期、时间文件夹
2. 筛选XML文件并按层级排序
添加两个活动处理Get Metadata的输出:
- Filter活动:
- 输入:
@activity('Get Metadata').output.childItems - 过滤条件:
@endsWith(item().name, '.xml'),仅保留XML格式文件
- 输入:
- Sort活动:
- 输入:Filter活动的输出结果
- 排序字段:
item().path(文件完整路径) - 排序顺序:升序,确保先处理
timefolder(1)的文件,再处理timefolder(2)的文件
3. 配置For Each串行执行循环
添加For Each活动,设置如下:
- 输入:Sort活动的输出结果
- 勾选Sequential(必选,保证逐个处理,完成一个再启动下一个)
- 循环内部添加Databricks Notebook活动:
- 在Notebook活动的
Base parameters中新增参数(例如targetFilePath) - 参数值设置为
@item().path,将当前循环的XML文件完整路径传递给Notebook - 确保Notebook已预先定义好接收该参数的逻辑,用于读取对应XML文件
- 在Notebook活动的
4. 可选:错误处理机制
若需避免单个文件处理失败中断整个流程,可在Databricks Notebook活动上添加Failure分支:
- 例如添加Set Variable活动记录错误文件路径,或添加Copy Data活动将错误日志写入存储账户
关键注意事项
- 务必开启For Each的
Sequential模式,默认并行执行会同时启动多个Notebook,不符合需求 - 排序时必须使用文件完整路径
path而非文件名name,否则无法保证嵌套文件夹的处理顺序 - 确认ADF传递的参数名称与Databricks Notebook中定义的参数名称完全一致,避免参数传递失效
内容的提问来源于stack exchange,提问作者wanderingdev
相关产品推荐
相关产品推荐

