Delta Lake 存储层 - 概念

时间:2021-07-10 17:37:09

标签: databricks delta-lake

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

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

请帮我弄清楚这个概念。

1 个答案:

答案 0 :(得分:1)

这些逻辑层:

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

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