kubernetes 如何在客户的生产环境中生成DBT数据沿袭图?

vuktfyat  于 2023-05-16  发布在  Kubernetes
关注(0)|答案(1)|浏览(137)

我们的项目在客户的基础设施上运行,其中基础设施通过Kubernetes和Terraform进行管理。我们使用Airflow自动化我们的工作。
任何带有DBT的Airflow都使用Airflow中提供的KubernetesPodOperator运行。我们计划为每个客户端的表创建数据沿袭图。
我看到了这个链接
How to setup dbt UI for data lineage?
使用下面的2个命令,我可以在我的本地机器上生成DBT数据文档。

dbt docs generage
dbt docs serve --port 8081

现在我需要在任何客户端位置生成相同的。所以我写了DAG如下所示:

sync_data_lineage = KubernetesPodOperator(namespace='etl',
                                                 image=f'blotout/dbt-analytics:{TAG_DBT_VERSION}',
                                                 cmds=["/usr/local/bin/dbt"],
                                                 arguments=['docs', 'generate'],
                                                 env_vars=env_var,
                                                 name="sync_data_lineage",
                                                 configmaps=['awskey'],
                                                 task_id="sync_data_lineage",
                                                 get_logs=True,
                                                 dag=dag,
                                                 is_delete_operator_pod=True,
                                                 )

    deploy_lineage_graph = KubernetesPodOperator(namespace='etl',
                                              image=f'blotout/dbt-analytics:{TAG_DBT_VERSION}',
                                              cmds=["/usr/local/bin/dbt"],
                                              arguments=['docs', 'serve', '--port', '8081'],
                                              env_vars=env_var,
                                              name="deploy_lineage_graph",
                                              configmaps=['awskey'],
                                              task_id="deploy_lineage_graph",
                                              get_logs=True,
                                              dag=dag,
                                              is_delete_operator_pod=True,
                                              )

sync_data_lineage >> deploy_lineage_graph

现在第一个任务成功运行,但当第二个任务运行时,它找不到catalog.json,这是由第一个任务'sync_data_lineage'创建的。原因是一旦第一个DBT命令运行并生成catalog.json,pod就会被销毁。第二个任务在第二个pod中运行,因此无法在第一步中将文档部署为catalog.json。
我该如何解决这个问题?

mccptt67

mccptt671#

尝试将DBT工件保存在S3或其他外部存储器上。

相关问题