我遇到了一个快要把我逼疯的问题,因为我不知道是什么原因导致了这个问题。
我们在容器中使用
dbt-core
和 dagster
(无 dagster+)。 dbt
和dagster
对我们来说都是新的。
我将所有内容都集中在一个 gitlab
项目中,并将其部署到基础设施中。
在 dockerfile
中,我运行 dagster
与
CMD ["dagster", "dev", "--log-level", "debug", "--module-name", "orchestration", "--host", "0.0.0.0", "--port", "8080" ]
一切都很顺利。模块已加载,我可以运行我定义的资产作业和时间表。一切都很好,对我们来说是一大进步(从 SAS 迁移)。
所以今天我在我们的
dbt
项目中添加了另外几个模型,并为我们的dagster orchestration
定义了另一项工作。
我使用我已经使用的相同块并更改了 dbt
标签,给它一个新名称并将其传递回我的定义中。
突然,模块无法再加载,并且
dagster
给了我以下错误堆栈跟踪:
dagster._core.errors.DagsterInvalidConfigError: Invalid default_value for Field.
Error 1: Received unexpected config entry "dbt_assets" at the root. Expected: "{ }".
File "/app/lib64/python3.11/site-packages/dagster/_grpc/server.py", line 421, in __init__
self._loaded_repositories: Optional[LoadedRepositories] = LoadedRepositories(
^^^^^^^^^^^^^^^^^^^
File "/app/lib64/python3.11/site-packages/dagster/_grpc/server.py", line 279, in __init__
repo_def.load_all_definitions()
File "/app/lib64/python3.11/site-packages/dagster/_core/definitions/repository_definition/repository_definition.py", line 138, in load_all_definitions
self._repository_data.load_all_definitions()
File "/app/lib64/python3.11/site-packages/dagster/_core/definitions/repository_definition/repository_data.py", line 203, in load_all_definitions
self.get_all_jobs()
File "/app/lib64/python3.11/site-packages/dagster/_core/definitions/repository_definition/repository_data.py", line 426, in get_all_jobs
self._all_jobs = self._jobs.get_all_definitions()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/lib64/python3.11/site-packages/dagster/_core/definitions/repository_definition/caching_index.py", line 92, in get_all_definitions
sorted(
File "/app/lib64/python3.11/site-packages/dagster/_core/definitions/repository_definition/caching_index.py", line 123, in get_definition
definition = cast(Callable, definition_source)()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/lib64/python3.11/site-packages/dagster/_core/definitions/repository_definition/repository_data_builder.py", line 138, in resolve_unresolved_job_def
job_def = unresolved_job_def.resolve(
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/lib64/python3.11/site-packages/dagster/_core/definitions/unresolved_asset_job_definition.py", line 215, in resolve
return build_asset_job(
^^^^^^^^^^^^^^^^
File "/app/lib64/python3.11/site-packages/dagster/_core/definitions/asset_job.py", line 202, in build_asset_job
return graph.to_job(
^^^^^^^^^^^^^
File "/app/lib64/python3.11/site-packages/dagster/_core/definitions/graph_definition.py", line 688, in to_job
return JobDefinition.dagster_internal_init(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/lib64/python3.11/site-packages/dagster/_core/definitions/job_definition.py", line 286, in dagster_internal_init
return JobDefinition(
^^^^^^^^^^^^^^
File "/app/lib64/python3.11/site-packages/dagster/_core/definitions/job_definition.py", line 238, in __init__
self._config_mapping = _config_mapping_with_default_value(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/lib64/python3.11/site-packages/dagster/_core/definitions/job_definition.py", line 1202, in _config_mapping_with_default_value
updated_fields[name] = Field(
^^^^^^
File "/app/lib64/python3.11/site-packages/dagster/_config/field.py", line 312, in __init__
raise DagsterInvalidConfigError(
当我从代码中取出新作业时,它再次工作,很好......
我的项目中唯一与
dagster
相关的文件是 setup.py, setup.cfg, pyproject.toml and __init__.py
,它位于另一个子文件夹中。这是我配置资产作业等的地方。
我不知道下一步该去哪里。
提前谢谢大家!
我自己解决了。 由于错误消息发送器没有完全指向正确的方向,我正在寻找错误的位置。 解决方案非常简单。
在
dbt
中,我使用标签,这样我就可以轻松地构建资产作业。使用 dbt_include
和 dbt_exclude
,我确保仅需要的模型将由 dbt
运行。
我构建的模型基本上做了三件不同的事情。 1. 全面刷新,一切都从头开始构建。 2.每日增量。 3. 构建视图以使新数据可供其他人使用。第三部分的新模型有两个标签
tags = ['analytic_reporting_full_refresh', 'analytic_reporting_sharing_views']
。在我的资产定义中,我包含了共享视图并排除了 full_refresh 模型。显然这不起作用并且 dagster
崩溃了,因为这个资产工作基本上什么都没有。所以我删除了dbt_exclude
,它工作得很好。
我希望这可以帮助处于相同情况的人。