dagster 在添加另一个 dbt 作业后无法加载模块

问题描述 投票:0回答:1

我遇到了一个快要把我逼疯的问题,因为我不知道是什么原因导致了这个问题。

我们在容器中使用

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 dagster
1个回答
0
投票

我自己解决了。 由于错误消息发送器没有完全指向正确的方向,我正在寻找错误的位置。 解决方案非常简单。

dbt
中,我使用标签,这样我就可以轻松地构建资产作业。使用
dbt_include
dbt_exclude
,我确保仅需要的模型将由
dbt
运行。

我构建的模型基本上做了三件不同的事情。 1. 全面刷新,一切都从头开始构建。 2.每日增量。 3. 构建视图以使新数据可供其他人使用。第三部分的新模型有两个标签

tags = ['analytic_reporting_full_refresh', 'analytic_reporting_sharing_views']
。在我的资产定义中,我包含了共享视图并排除了 full_refresh 模型。显然这不起作用并且
dagster
崩溃了,因为这个资产工作基本上什么都没有。所以我删除了
dbt_exclude
,它工作得很好。

我希望这可以帮助处于相同情况的人。

© www.soinside.com 2019 - 2024. All rights reserved.