Databricks Delta Live 表只是在 CDC 和 SCD 之后覆盖吗?

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

Databricks 社区您好,

目前我面临以下问题,我正在尝试为此找到一个好的解决方案。我使用 DLT 开发具有多跳架构的管道。

为了摄取青铜表,我使用自动加载器功能(来源是 S3)。对于包含我的客户数据的银表,我使用带有 SCD 类型 2 的 dlt.apply_changes() 函数。

我还想直接在同一个 DLT 管道中计算客户银表的特征(金表),但使用 dlt.apply_changes() 后的每个表都将是一个物化视图。 (APPLY CHANGES INTO 查询或 apply_changes 函数的目标不能用作流表的源,请参阅 https://docs.databricks.com/en/delta-live-tables/cdc.html

当白银到黄金的转换写入同一个DLT管道中并且新一批数据到达时,黄金表每次都会被覆盖。我想避免在这个黄金表中完全覆盖,我只想附加数据,所以我不必再次转换旧数据。有这种可能吗?

目前我的解决方案是仅对铜牌和银牌桌使用 DLT,并计算作业任务中的转换。 (第一个任务是 DLT 管道,白银到黄金的转换是下一个任务)。还有其他方法可以解决这个问题吗?

apache-spark databricks spark-streaming delta-live-tables dlt
1个回答
0
投票

Databricks Delta Live Tables 是 Databricks Delta 提供的一项功能,Databricks Delta 是一个结合了数据湖和数据仓库功能的统一分析平台。 Live Tables 旨在通过提供自动化的方式来处理数据湖中的数据更新,从而简化变更数据捕获 (CDC) 和缓慢变化维度 (SCD) 流程的管理。

Live Tables 不会简单地覆盖 CDC 和 SCD 处理后的数据。相反,它提供了一种更高效、更自动化的方式来处理这些更改,同时维护历史数据并确保数据一致性。以下是其工作原理的简要概述:

更改数据捕获 (CDC):实时表可以实时捕获数据湖的更改并以结构化格式存储它们。这包括插入、更新和删除。此更改历史记录存储在 Delta 表中,您可以在数据随时间变化时查询和分析数据。

缓慢变化的维度(SCD):SCD 是指数据库中记录的属性随时间缓慢变化的场景。 Live Tables 可以通过自动检测更改并维护数据的历史版本来处理 SCD 场景。这有助于跟踪客户详细信息、产品属性等的更改等场景。

优化存储和查询性能:Databricks Delta 采用列式存储和索引等技术相结合,确保历史数据高效存储,并且即使数据增长,查询性能也保持较高。

并发控制:Databricks Delta Live Tables 提供内置机制来处理来自多个用户或进程的并发数据修改,以维护数据完整性和一致性。

时间旅行:达美支持时间旅行,让您可以查询特定时间点的数据、访问以前版本的数据以及从意外的数据更改中恢复。 通过chatgpt收集

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