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

Databricks上DBT工作流失败:SeedNode无depends_on属性

DBT工作流执行失败:'SeedNode' object has no attribute 'depends_on' 问题排查

问题背景

在Databricks环境执行DBT工作流时失败,执行命令:

dbt run --target workflow --project-dir dbt/projectdir/ --profiles-dir dbt/

使用的dbt版本为1.4.1,核心报错:

AttributeError: 'SeedNode' object has no attribute 'depends_on'

完整报错堆栈:

09:59:17  Traceback (most recent call last):
File "/local_disk0/.ephemeral_nfs/cluster_libraries/python/lib/python3.9/site-packages/dbt/main.py", line 135, in main
results, succeeded = handle_and_check(args)
File "/local_disk0/.ephemeral_nfs/cluster_libraries/python/lib/python3.9/site-packages/dbt/main.py", line 198, in handle_and_check
task, res = run_from_args(parsed)
File "/local_disk0/.ephemeral_nfs/cluster_libraries/python/lib/python3.9/site-packages/dbt/main.py", line 245, in run_from_args
results = task.run()
File "/local_disk0/.ephemeral_nfs/cluster_libraries/python/lib/python3.9/site-packages/dbt/task/runnable.py", line 454, in run
self._runtime_initialize()
File "/local_disk0/.ephemeral_nfs/cluster_libraries/python/lib/python3.9/site-packages/dbt/task/runnable.py", line 165, in _runtime_initialize
super()._runtime_initialize()
File "/local_disk0/.ephemeral_nfs/cluster_libraries/python/lib/python3.9/site-packages/dbt/task/runnable.py", line 94, in _runtime_initialize
self.load_manifest()
File "/local_disk0/.ephemeral_nfs/cluster_libraries/python/lib/python3.9/site-packages/dbt/task/runnable.py", line 81, in load_manifest
self.manifest = ManifestLoader.get_full_manifest(self.config)
File "/local_disk0/.ephemeral_nfs/cluster_libraries/python/lib/python3.9/site-packages/dbt/parser/manifest.py", line 203, in get_full_manifest
manifest = loader.load()
File "/local_disk0/.ephemeral_nfs/cluster_libraries/python/lib/python3.9/site-packages/dbt/parser/manifest.py", line 339, in load
self.parse_project(
File "/local_disk0/.ephemeral_nfs/cluster_libraries/python/lib/python3.9/site-packages/dbt/parser/manifest.py", line 467, in parse_project
parser.parse_file(block)
File "/local_disk0/.ephemeral_nfs/cluster_libraries/python/lib/python3.9/site-packages/dbt/parser/base.py", line 425, in parse_file
self.parse_node(file_block)
File "/local_disk0/.ephemeral_nfs/cluster_libraries/python/lib/python3.9/site-packages/dbt/parser/base.py", line 386, in parse_node
self.render_update(node, config)
File "/local_disk0/.ephemeral_nfs/cluster_libraries/python/lib/python3.9/site-packages/dbt/parser/base.py", line 363, in render_update
self.update_parsed_node_config(node, config, context=context)
File "/local_disk0/.ephemeral_nfs/cluster_libraries/python/lib/python3.9/site-packages/dbt/parser/base.py", line 336, in update_parsed_node_config
get_rendered(hook.sql, context, parsed_node, capture_macros=True)
File "/local_disk0/.ephemeral_nfs/cluster_libraries/python/lib/python3.9/site-packages/dbt/clients/jinja.py", line 590, in get_rendered
return render_template(template, ctx, node)
File "/local_disk0/.ephemeral_nfs/cluster_libraries/python/lib/python3.9/site-packages/dbt/clients/jinja.py", line 545, in render_template
return template.render(ctx)
File "/local_disk0/.ephemeral_nfs/cluster_libraries/python/lib/python3.9/site-packages/jinja2/environment.py", line 1301, in render
self.environment.handle_exception()
File "/local_disk0/.ephemeral_nfs/cluster_libraries/python/lib/python3.9/site-packages/jinja2/environment.py", line 936, in handle_exception
raise rewrite_traceback_stack(source=source)
File "", line 1, in top-level template code
File "/local_disk0/.ephemeral_nfs/cluster_libraries/python/lib/python3.9/site-packages/jinja2/sandbox.py", line 393, in call
return __context.call(__obj, *args, **kwargs)
File "/local_disk0/.ephemeral_nfs/cluster_libraries/python/lib/python3.9/site-packages/dbt/clients/jinja.py", line 328, in __call__
with self.track_call():
File "/usr/lib/python3.9/contextlib.py", line 117, in __enter__
return next(self.gen)
File "/local_disk0/.ephemeral_nfs/cluster_libraries/python/lib/python3.9/site-packages/dbt/clients/jinja.py", line 319, in track_call
self.node.depends_on.add_macro(unique_id)

AttributeError: 'SeedNode' object has no attribute 'depends_on'

故障原因分析

  • dbt 1.4.1版本存在设计缺陷:SeedNode对象未实现depends_on属性,但当项目中自定义宏或全局钩子(如on-run-start/on-run-end)被seed节点调用时,dbt的宏调用追踪逻辑会尝试访问该属性,触发错误。
  • 适配器版本不兼容:若使用的dbt-databricks适配器版本与dbt-core 1.4.1不匹配,可能会破坏节点的属性结构,导致该异常。

修复建议

  • 升级dbt版本:dbt 1.4.x后续小版本(如1.4.7及以上)或1.5+主版本已修复该问题,升级dbt-core和dbt-databricks到兼容的稳定版本。执行命令:
    pip install --upgrade dbt-core~=1.4.7 dbt-databricks~=1.4.0
    
  • 排查自定义宏/钩子:若无法升级版本,检查项目中的全局钩子和自定义宏,暂时注释掉被seed节点调用的宏逻辑,或调整宏的适用范围,避免在seed节点上下文触发依赖追踪。
  • 验证适配器兼容性:确认dbt-databricks版本与dbt-core 1.4.1匹配,卸载不兼容版本后重装对应版本。
  • 清理缓存:执行dbt clean清理本地manifest缓存,再重新运行工作流,避免旧缓存导致的异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 18:27:54