Delta Lake 存储层 - 概念

Mak*_*Mak 4 databricks delta-lake

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

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

请帮助我弄清楚这个概念。

Ale*_*Ott 5

这些逻辑层:

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

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