Dataplex 元数据

本指南介绍了 Dataplex 元数据以及如何使用 Dataplex API 进行管理。

概览

Dataplex 会扫描以下内容:

  • 数据湖中的结构化和半结构化数据资产, 将表元数据提取到表实体中
  • 用于提取文件集元数据的非结构化数据(如图片和文本) 转换为文件集实体

您可以使用 Dataplex Metadata API 执行以下任一操作:

  • 查看、修改和删除表和文件集实体元数据
  • 创建您自己的表或文件集实体元数据

您还可以通过以下任一方式分析 Dataplex 元数据:

  • 用于搜索和标记的 Data Catalog
  • 将 Dataproc Metastore 和 BigQuery 用于表 元数据查询和分析处理

Dataplex API

本部分总结了 Dataplex API 及其关键资源。

控制平面 API

借助 Dataplex 控制平面 API, 数据湖、区域和资产资源的管理。

  • 湖泊: Dataplex 服务实例,可用于管理 组织内的多个项目。

  • 可用区: 数据湖中资产的逻辑分组。在数据湖中使用多个区域,以便根据准备情况、工作负载或组织结构整理数据。

  • 资产:存储在 Cloud Storage 存储桶或 BigQuery 数据集中的数据,这些存储资源会附加到数据湖中的某个区域。

Metadata API

使用 Dataplex Metadata API 在 中创建和管理元数据 表和文件集实体及分区。Dataplex 扫描数据 资源来创建实体和分区。 实体和分区会保留对关联的资产和实际存储位置的引用。

主要概念

表实体

具有明确定义的架构的结构化数据的元数据。表格实体 由实体 ID 和数据位置唯一标识。您可以在 BigQuery 和 Dataproc Metastore 中查询表实体元数据:

  • Cloud Storage 对象:Cloud Storage 对象的元数据, 它们通过 Cloud Storage API 访问。
  • BigQuery 表:BigQuery 的元数据 表格,这些表格可通过 BigQuery API 访问。
文件集实体

与非结构化数据(通常是无架构数据)相关的元数据。文件集通过实体 ID 和数据位置进行唯一标识。每个文件集都有数据格式。

分区

表或文件集实体中数据子集的元数据,由一组键值对和数据位置标识。

试用 API

您可以使用 Dataplex lakes.zones.entitieslakes.zones.partitions API 参考文档页面,查看与每个 API 关联的参数和字段。请使用参考文档随附的试用此 API 面板 使用不同的参数和字段来发出 API 请求。 您无需生成凭据即可构建、查看和提交请求,然后查看服务返回的响应。

以下各部分提供的信息有助于您了解 使用 Dataplex Metadata API。

实体

列出实体

如需限制服务返回的实体列表,请将过滤条件查询参数添加到 list entities 请求网址。

获取实体

默认情况下,Get Entity 响应包含基本实体 元数据。如需检索其他架构元数据,请将 view 查询参数添加到请求网址。

兼容性详情:虽然 Dataplex 元数据会在元数据 API 中集中注册,但只有与 BigQuery 和 Apache Hive Metastore 兼容的实体表元数据会发布到 BigQuery 和 Dataproc Metastore。Get Entity API 会返回 CompatibilityStatus 消息,该消息指示表元数据是否与 BigQuery 和 Hive Metastore 兼容,如果不兼容,则会说明不兼容的原因。

更新实体

您可以使用此 API 修改实体元数据,包括您或 Dataplex 将管理实体元数据。

  • 此 API 会完全替换所有可变实体字段。 以下 Entity 字段是不可变的,如果您在 update 中指定这些字段 请求,则会被忽略:
  • 为所有可变的实体字段(包括所有字段)指定值 schema 字段指定架构, 即使值未发生变化也是如此。
  • 提供 etag 字段。要获取 ETag,首先要提交一个 entities.get 请求, 该函数在响应中返回实体的 etag
  • 更新架构字段:您可以更新 利用 Dataplex 提高其准确性:
    • 如果架构是文件集,请将所有架构字段留空。
    • 要定义重复字段,请将 模式 发送至 REPEATED。要定义结构体字段,请将 类型 发送至 RECORD
    • 您可以设置架构的 userManaged 字段,以指定是您还是 Dataplex 管理表元数据。默认设置为 Dataplex 受管理。如果 userManaged 设为 true,并且 EntityView 设为 SCHEMAFULL,则此设置会包含在 entities.get 请求返回的信息中。
  • 更新分区字段
    • 对于非 Hive 样式的分区数据,Dataplex 发现功能 自动生成分区键。例如,对于数据路径 gs://root/2020/12/31,分区键 p0p1p2 。为了让查询更直观,您可以将 p0p1p2 分别更新为 yearmonthday
    • 如果您将分区样式更新为 HIVE 样式 分区字段不可变
  • 更新其他元数据字段:您可以更新自动生成的 mimeType, CompressionFormatCsvOptionsJsonOptions 有助于发现 Dataplex 的字段。Dataplex Discovery 会在下次运行时使用新值。

创建实体

使用 entities.create API 创建表或文件集元数据实体。 填写必填字段和相关的可选字段,或让 Dataplex 发现服务填写可选字段。

删除实体

  • 提供 etag 字段。您可以先提交 entities.get 请求,然后在响应中获取实体的 etag,以此来获取 etag。

如果原始可用区中表或文件集的基础数据被删除, 文件集元数据会在下次 发现扫描。如果精选可用区中表的底层数据 则表元数据不会相应地删除,而是缺失 数据操作。如需解决此问题,请通过元数据 API 明确删除表元数据实体。

分区

列出分区

如需限制服务返回的分区列表,请将过滤条件查询参数添加到 list partitions 请求网址。

示例

  • ?filter="Country=US AND State=CA AND City=Sunnyvale"
  • ?filter="year < 2000 AND month > 12 AND Date > 10"

获取分区

要获取分区,您必须通过将 分区键值添加到网址末尾,格式为 partitions/value1/value2/…./value10

示例:如果分区包含值 {Country=US, State=CA, City=Sunnyvale}, get 请求网址应以 /partitions/US/CA/Sunnyvale 结尾。

重要提示:附加的网址值必须为 进行双编码。例如,url_encode(url_encode(value)) 可以 用于对“US:CA/CA#Sunnyvale”进行编码使请求网址以 和/partitions/US%253ACA/CA%2523Sunnyvale。响应中的名称字段会保留编码格式。

创建分区

如需为数据源创建自定义分区,请使用 partitions.create API。指定必需的 位置 该字段替换为 Cloud Storage 路径。

删除分区

将分区键值附加到末尾,以完成请求网址 请求网址,格式为 partitions/value1/value2/…./value10

示例:如果分区包含值 {Country=US, State=CA, City=Sunnyvale}, 请求网址应以 /partitions/US/CA/Sunnyvale 结尾。

重要提示:附加的网址值必须符合 RFC-1034 的要求,或者必须进行双重编码,例如将 US:/CA#/Sunnyvale 编码为 US%3A/CA%3A/Sunnyvale

后续步骤