ADF与Databricks中文件更新触发任务的实现方案咨询
问题解答
问题1:文件更新时触发Databricks任务的活动选择
- 核心方案是ADF存储触发器 + Databricks执行类活动:
- 先创建Blob/ADLS存储触发器,监控目标文件所在的容器/文件夹,触发条件设为「文件创建或修改」
- 触发器触发流水线后,用Databricks Notebook活动直接运行对应的Databricks Notebook;如果是已存在的Databricks Job,也可以用Databricks Job活动调用执行
- 若需先验证文件有效性,可前置一个
Get Metadata活动获取文件属性(如大小、修改时间),确认无误后再触发Databricks活动
问题2:多文件更新触发模型运行的Get Metadata无效解决方案
你用Get Metadata只传LastModifiedDate的方案无效,是因为没处理多文件的遍历和对比逻辑,以下是可行方案:
方案1:优化Get Metadata+逻辑判断流程
- 配置
Get Metadata活动,FieldList选择ChildItems和LastModified,指向包含5个依赖文件的文件夹 - 添加Filter活动,将
Get Metadata返回的ChildItems过滤出这5个目标文件(通过匹配ItemName实现) - 用For Each活动遍历过滤后的文件,获取每个文件的
LastModified时间,和预先存储的基准时间(可存在ADF变量、Azure SQL或Key Vault中)对比 - 只要有一个文件的修改时间晚于基准时间,就触发Databricks活动运行
sales_target模型,同时更新基准时间为当前最新的修改时间
方案2:更简洁的存储事件触发器方案
直接创建存储事件触发器,监控5个文件所在的文件夹,触发条件设为「文件创建或修改」,任一符合条件的文件变动都会直接触发流水线运行Databricks模型,无需复杂的Get Metadata逻辑判断
内容的提问来源于stack exchange,提问作者Bahubali Sharma
相关产品推荐
相关产品推荐

