Iceberg 格式的数据质量本机支持 (预览)

Microsoft Purview 对 Apache Iceberg 开放表格式的本机支持以公共预览版提供。 Microsoft Purview 客户使用 Microsoft Azure Data Lake Storage (ADLS) Gen2、Microsoft Fabric Lakehouse、Amazon Web Services (AWS) S3 和 Google Cloud Platform (GCP) Google Cloud Storage (GCS) 现在可以使用 Microsoft Purview 来策划、治理和执行 Iceberg 数据资产的数据运行状况控制和数据质量评估。

Iceberg 文件结构

Iceberg 表不仅仅是数据文件的集合。 它包括各种元数据文件,用于跟踪表的状态,并促进读取、写入和架构演变等作。 下面是 Iceberg 表中涉及的关键组件的探索。 Iceberg 表中的数据文件通常以列格式存储,例如 Apache Parquet、Apache Avro 或 Apache Optimized Row Columnar (ORC) 。 这些文件包含用户在查询期间与之交互的实际数据。

Iceberg 文件结构示意图。

冰山目录

顶部是 Iceberg 目录,用于存储每个表的当前元数据指针。 此目录通过引用当前元数据文件来跟踪表的最新状态。

元数据层

元数据层是 Iceberg 功能的核心,由几个关键元素组成:

  • 元数据文件: 此文件包含有关表的架构、分区和快照的信息。 在关系图中, s0 是指快照,它实质上是表在给定时间点的状态记录。 如果存在多个快照(如 s0 和 s1),则元数据文件会跟踪这两者。
  • 清单列表: 此列表指向一个或多个清单文件。 清单列表充当对这些清单的引用容器,可帮助 Iceberg 有效地管理在不同作期间应读取或写入哪些数据文件。 每个快照可能有其自己的清单列表。

数据层

在数据层中,清单文件充当元数据和实际数据文件之间的中介。 每个清单文件指向数据文件的集合,提供存储在数据湖中的物理文件的映射。

  • 清单文件:这些文件存储一组数据文件的元数据,包括行计数、分区信息和文件路径。 它们允许 Iceberg 快速修剪和访问特定文件,从而实现高效的查询。
  • 数据文件:实际数据驻留在这些文件中,这些文件可能采用 Parquet、ORC 或 Avro 等格式。 Iceberg 基于分区组织数据文件,通过尽量减少不必要的数据扫描,允许在查询执行期间优化性能。

如何协同工作

执行查询或更新等作时,Iceberg 首先通过目录查找表的元数据文件。 元数据文件引用当前快照 (或多个快照) ,这些快照随后指向清单列表。 清单列表包含对清单文件的引用,而清单文件又列出单个数据文件。 这种分层结构使 Iceberg 能够高效地管理大型数据集,同时确保事务一致性,从而实现时间旅行和架构演变等功能。

这种多层设计增强了批处理和流式处理作的性能和可伸缩性,因为仅访问必要的数据文件,并且更新通过快照进行管理,而不会影响整个数据集。

OneLake 中的冰山数据

可以在 Microsoft Fabric 之间无缝使用 Iceberg 格式的数据 ,无需移动或重复数据。 可以使用 OneLake 快捷方式直接指向数据层。

Iceberg 数据存储在 OneLake 中,使用 Snowflake 或其他 Iceberg 编写器编写。 OneLake 将表虚拟化为 Delta Lake 表,确保跨 Fabric 引擎的广泛兼容性。 例如,可以在 Snowflake 中创建一个卷,并将其直接指向 Fabric Lakehouse。 在 Fabric OneLake 中创建表后,自动同步可确保实时反映任何数据更新。 这种简化的过程有助于在 Microsoft Fabric 中使用 Iceberg 数据。 从 Snowflake 文档获取更多详细信息

重要

AWS S3 和 GCS 中的 Iceberg 数据还需要自动同步为增量,以便策展、治理以及测量和监视数据质量。

Iceberg 数据的数据质量

对于在 (Parquet、ORC 上的 Iceberg 中对数据进行本机补水的所有用户,ADLS Gen2 或 Fabric Lakehouse 上的 Avro) 必须直接连接指向托管数据和元数据 Iceberg 目录的目录位置的扫描。 请遵循下面列出的步骤:

  1. 在 Microsoft Purview 数据映射 中配置和运行扫描。

  2. 将 dir (托管数据和元数据) 配置为数据资产,并将其关联到数据产品。 这将形成 Iceberg 数据集。 将 Iceberg 数据资产关联到 Microsoft Purview 统一目录 中的数据产品。 了解如何将数据资产关联到数据产品

  3. 在“统一目录”中,在“运行状况管理”下,选择“数据质量视图”, (数据资产) 查找 Iceberg 文件,并设置数据源连接。

    3.1 若要设置 AdlsG2 连接, 请按照 DQ 连接文档中所述的步骤进行作

    3.2 若要设置 Fabric OneLake 连接, 请遵循 fabric 数据资产 DQ 文档中所述的步骤。

  4. 应用数据质量规则,并针对列级和表级数据质量评分运行数据质量扫描。

  5. 在所选 Iceberg 文件 (数据资产) 的“ 架构 ”页上,选择“ 导入架构 ”以从 Iceberg 文件的数据源导入架构。

  6. 在运行分析作业或数据质量扫描作业之前,请转到 Iceberg 文件的 “概述 ”页,然后在 “数据资产 ”下拉菜单中选择“ Iceberg”。

分析和数据质量扫描

完成连接设置和数据资产文件格式选择后,可以在 Iceberg 开放格式化文件中分析、创建和应用规则,并运行数据质量扫描。 遵循以下文档中所述的分步指南:

重要

  • 对目录发现、策展、数据分析和数据质量扫描功能中的 Iceberg 开放格式的支持现已推出 预览版。
  • 对于数据分析和数据质量评估,需要从“数据质量架构”页中检索和设置架构。
  • 使用者发现体验:使用者不会在数据资产视图中看到架构,因为数据映射尚不支持 Iceberg 开放表格式。 数据质量专员将能够从“数据质量架构”页导入架构。

限制

当前版本仅支持使用 Apache Hadoop 目录以 Iceberg 格式创建的数据。

Lakehouse 路径和 ADLS Gen2 路径

  • Iceberg 元数据存储数据和元数据的完整路径。 确保使用 ADLS Gen2 和 Microsoft Fabric Lakehouse 的完整路径。 此外,对于在写入过程中Microsoft Fabric Lakehouse 路径,请确保使用 ID 路径作 (WRITES、UPSERTS) 。 abfss://c4dd39bb-77e2-43d3-af10-712845dc2179@onelake.dfs.fabric.microsoft.com/5e8ea953-56fc-49c1-bc8c-0b3498cf1a9c/Files/CustomerData.
  • 文件系统为 ID,将 Lakehouse 作为 ID。对于 Microsoft Purview 在 Iceberg 上执行 DQ,必须使用绝对路径而不是相对路径。 若要验证,请确保将快照路径检查为 FQN) 路径 (完全限定名称。

架构检测

  • 数据映射对无法检测 Iceberg 架构具有限制。 在 Fabric Lakehouse 或 ADLS Gen2 上策展 Iceberg 目录时,将无法查看架构。 但是,DQ 提取架构能够拉取特选资产的架构。

建议

  1. 如果使用 ICEBERG 格式的 SNOWFLAKE 目录,并且卷存储为 ADLS Gen2、AWS S3 或 GCP GCS,请使用 Microsoft Fabric OneLake 表快捷方式,并将 DQ 作为 DELTA 表执行。 FYI:仅支持 Parquet 文件格式的 Iceberg。
  2. 如果将 ADLS 用于 Iceberg Format 和 Hadoop 目录,请直接扫描目录,将 DQ 引擎用作 DQ 的 Iceberg 格式的默认值。 FYI:支持 Parquet、ORC、Avro 文件格式的 Iceberg。
  3. 如果使用 Snowflake for Iceberg 格式,则可以将 VOLUME 存储直接指向 Microsoft Fabric Lakehouse 路径,然后使用 OneLake 表为 DQ 创建与 Delta 兼容的版本。 FYI:仅支持 Parquet 文件格式的 Iceberg。
  4. 如果将 Microsoft Fabric Lakehouse for Iceberg Format 与 Hadoop 目录配合使用,请直接扫描 lakehouse 目录,使用 DQ 引擎作为 DQ 的 Iceberg 格式的默认值。 FYI:支持 Parquet、ORC、Avro 文件格式的 Iceberg。

References