Delta Lake 存储层 - 概念

Delta Lake storage Layers - Concepts

我是Databricks的新手,有以下疑问-

Databricks 提出了 3 层存储 Bronze(原始数据)、Silver(干净数据)和 Gold(聚合数据)。很清楚这些存储层要存储什么。但我怀疑这些实际上是如何创建或识别的。从 Silver 或 Gold 检索数据时我们如何指定。这些是不同的数据库还是不同的格式或其他什么?

请帮我弄清楚这个概念。

这些逻辑层:

  • Bronze 层存储原始数据而无需修改 - 最常见的更改通常只是更改数据格式,例如,将输入数据作为 CSV 并将数据存储为 Delta。拥有 Bronze 层的主要目标是确保您拥有原始数据,并且您可以在必要时重建 Silver & Gold 数据,例如,如果您在生成 Silver 层的代码中发现错误。使青铜层严重依赖于数据源的必要性。例如,如果你的数据来自某个数据库,那么你可以预期那里的数据已经干净了,在这种情况下你可以将它们直接摄取到银层中。最终用户通常不会直接访问青铜层
  • Silver 层是通过应用一些转换、丰富和清理过程从 Bronze 创建的。例如,如果某列的数据必须非空,或者在一定范围内,则可以添加bronze_df.filter("col1 is not null")这样的代码并存储结果。如果您在转换中发现错误,或者需要添加额外的检查,可以从青铜层重新生成银层。需要行级详细数据的最终用户通常可以访问 Silver 层
  • Gold 层通常是某种聚合数据,将用于报告、仪表板等。Gold 层中可能存在从一个或多个 Silver 表生成的多个表。

Databricks 通常建议对所有这些层使用 Delta Lake,因为它更容易在层之间增量处理数据,通常使用结构化流。但你不受此限制。我见过许多客户将 Gold 层的结果输出到 Azure SQL 数据库、NoSQL 数据库或其他东西,从中它可以被只能与这些系统一起工作的应用程序使用。