Delta 实时表的 Databricks 初始加载

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

我正在研究 Delta 实时表的 Databricks 初始加载。

我的生产管道场景是我的目标表是 SCD 1,我的源数据来自 eventhub(仅存储上游 7 天的数据)。

任何不属于 7 天的历史记录都应作为初始加载。

管道:

源系统表----->eventhub------>登陆cdc表>----->目标银表

初始负载:

源系统表 ---> ADF ---> ADLS(parque 文件) --> 目标银表

当我尝试进行初始加载时,出现以下错误。

我尝试了使用不同的增量实时表管道进行加载(没有2个管道不应具有相同的表),并且还尝试将笔记本更改为现有管道,但我仍然遇到同样的问题。

如何解决这个问题?

错误:

org.apache.spark.sql.catalyst.ExtendedAnalysisException:表“”已由 pipeline 管理。 一张表只能由一个管道拥有。并发管道操作,例如 维护和全面刷新会互相冲突。

databricks delta-live-tables databricks-unity-catalog
1个回答
0
投票

DLT 期望所有表都在同一管道中定义。它不适用于已经定义的表。原因是它有很多优化,需要负责清理。

其中任何一条管道是否已投入生产?如果您还没有部署,为什么不考虑将两者放在同一个管道中呢?您仍然可以将它们作为单独的笔记本,但两者都需要位于 dlt 框架上,并且都需要在同一管道中执行。两者都将以流式传输方式运行,因此批处理模式将在可用时获取数据(您需要为此使用自动加载器)。您需要在两个输入之间进行并集才能获得银表。

加载所有历史数据后,您可以选择保持管道不变或进行部署以删除历史笔记本。

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