为何通过Asset Bundle部署的Databricks Workflow触发器始终暂停?
问题背景
通过Asset Bundle创建的Databricks Workflow,部署后无论如何更新Cron表达式,触发器始终处于暂停状态,但手动触发Workflow可正常执行。Workflow包含多个存在前后依赖的DLT流水线任务。
排查与解决步骤
核对Asset Bundle配置中的触发器状态
大概率是bundle配置文件(如databricks.yml或Workflow定义yaml)中显式设置了pause_status: PAUSED,导致每次部署都会覆盖UI中的修改。打开配置文件定位到触发器部分,确保状态设置为UNPAUSED:triggers: - name: scheduled_trigger cron: quartz_cron_expression: "0 30 2 * * ?" timezone_id: "Asia/Shanghai" pause_status: UNPAUSED修改后重新执行
databricks bundle deploy完成部署。检查DLT流水线的独立调度设置
如果Workflow中的DLT流水线自身配置了独立的调度触发器,会干扰Workflow级别的调度。进入每个DLT流水线的设置页面,确认未启用独立调度,保证流水线仅受Workflow触发控制。验证Cron表达式格式与时区
Databricks使用Quartz Cron格式(顺序为秒 分 时 日 月 周 年),和常规Linux Cron不同,若格式错误会导致调度失效。同时确认时区ID为标准格式(如Europe/London而非GMT),可通过UI的Cron预览功能查看下一次触发时间是否合理。确认权限与部署完整性
确保部署Asset Bundle的账号拥有Workflow的编辑权限,且部署时未使用--dry-run等仅预览的参数。另外检查Workspace全局调度设置,确认没有限制调度执行的规则。强制重置触发器状态
若以上步骤无效,可通过Databricks CLI强制更新触发器状态:databricks workflows update --workflow-id <你的WorkflowID> --trigger-pause-status UNPAUSED或在UI中先手动启用触发器,再重新部署bundle配置。
内容的提问来源于stack exchange,提问作者hh54188

