如何通过ADF单流水线运行Databricks多Notebook或整合为主Notebook?
两种实现方案说明
方案一:用单条ADF流水线运行所有Notebook
你可以直接在单条ADF流水线中添加多个Databricks Notebook活动,来依次或并行执行这8个Notebook,具体操作如下:
- 新建ADF流水线,从活动面板拖拽多个「Databricks Notebook」活动到画布
- 为每个活动配置对应的Databricks集群、Notebook路径(确保路径正确指向你的8个独立Notebook)
- 根据业务需求设置活动执行顺序:
- 若Notebook之间无依赖,可设置为并行执行以提升整体效率,但需注意集群资源负载,避免因资源不足导致任务失败
- 若Notebook存在上下游依赖(比如A的输出是B的输入),需通过「成功时触发」的连线设置串行执行顺序
- 可配置失败处理策略:比如某个Notebook执行失败时,终止整个流水线,或跳过该任务继续执行后续任务
方案二:整合为一个主Notebook,通过单条ADF流水线触发
你可以创建一个主Notebook,通过Databricks的%run命令调用所有子Notebook,再用ADF单条流水线执行这个主Notebook,操作步骤:
- 在Databricks中新建主Notebook,在其中添加如下代码(替换为你的子Notebook实际路径):
%run /Workspace/your-project-folder/notebook-1 %run /Workspace/your-project-folder/notebook-2 %run /Workspace/your-project-folder/notebook-3 # 依次添加剩余5个Notebook的调用命令 - 若子Notebook之间有依赖,按执行顺序排列
%run命令即可;若无依赖,顺序不影响执行结果 - 在ADF中创建单条流水线,配置一个「Databricks Notebook」活动,指向这个主Notebook的路径,设置好集群参数即可
两种方案的适用场景
- 方案一适合Notebook业务逻辑相对独立、后续需单独修改或运行某个Notebook的场景,优势是保留独立性,劣势是ADF流水线配置项较多,维护成本略高
- 方案二适合Notebook属于同一完整流程、几乎不会单独运行的场景,优势是ADF配置极简,只需维护一条流水线,劣势是子Notebook无法通过主Notebook单独触发,且要注意子Notebook之间的变量冲突(
%run会共享主Notebook的上下文环境)
内容的提问来源于stack exchange,提问作者Keerthana Iyengar
相关产品推荐
相关产品推荐

