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 面板,使用不同的参数和字段发出 API 请求。您无需生成凭据即可构建、查看和提交请求,然后查看服务返回的响应。

以下部分提供了相关信息来帮助您了解和使用 Dataplex 元数据 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 会对所有可变 实体字段执行完整替换。以下实体字段不可变,如果您在更新请求中指定这些字段,系统会忽略它们:
  • 为所有可变实体字段(包括所有架构字段)指定值,即使这些值不会更改也是如此。
  • 提供 etag 字段。您可以先提交 entities.get 请求,然后在响应中获取实体的 etag,以此来获取 etag。
  • 更新架构字段:您可以更新 Dataplex 发现的表架构,以提高其准确性:
    • 如果架构是文件集,请将所有架构字段留空。
    • 如需定义重复字段,请将模式设置为 REPEATED。如需定义结构体字段,请将类型设置为 RECORD
    • 您可以设置架构的 userManaged 字段,以指定是您还是 Dataplex 管理表元数据。默认设置为由 Dataplex 管理。如果 userManaged 设为 true,并且 EntityView 设为 SCHEMAFULL,则此设置会包含在 entities.get 请求返回的信息中。
  • 更新分区字段
    • 对于非 Hive 样式分区数据,Dataplex 发现功能会自动生成分区键。例如,对于数据路径 gs://root/2020/12/31,系统会生成分区键 p0p1p2。为了让查询更直观,您可以将 p0p1p2 分别更新为 yearmonthday
    • 如果您将分区样式更新为 HIVE 样式,则分区字段将不可更改。
  • 更新其他元数据字段:您可以更新自动生成的 mimeTypeCompressionFormatCsvOptionsJsonOptions 字段,以便于 Dataplex 发现。Dataplex 发现功能将在下次运行时使用新值。

创建实体

使用 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

后续步骤