Dataplex 元数据

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

概览

Dataplex 会扫描以下内容:

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

您可以使用 Dataplex Metadata API 执行以下某项操作:

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

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

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

Dataplex API

本部分总结了 Dataplex API 以及使用这些 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 Metadata API。

实体

列出实体

如需限制服务返回的实体列表,请向 list entities 请求网址添加 filter 查询参数。

获取实体

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

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

更新实体

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

  • 此 API 会完全替换所有可变的 实体字段。以下 Entity 字段是不可变的,如果您在更新请求中指定这些字段,系统将忽略这些字段:
  • 为所有可变实体字段(包括所有架构字段)指定值,即使值未更改也是如此。
  • 提供 etag 字段。您可以通过以下方式获取 etag:首先提交 entities.get 请求,在响应中返回实体的 etag
  • 更新架构字段:您可以更新 Dataplex 发现的表架构,以提高其准确性:
    • 如果架构是一个文件集,请将所有架构字段留空。
    • 如需定义重复字段,请将 mode 设置为 REPEATED。如需定义结构体字段,请将类型设置为 RECORD
    • 您可以设置架构的 userManaged 字段,以指定您还是 Dataplex 管理表元数据。默认设置为由 Dataplex 管理。如果 userManaged 设置为 true,当 EntityView 设置为 SCHEMAFULL 时,此设置将包含于 entities.get 请求返回的信息中。
  • 更新分区字段
    • 对于非 Hive 样式的分区数据,Dataplex 发现功能会自动生成分区键。例如,对于数据路径 gs://root/2020/12/31,会生成分区键 p0p1p2。为了更直观地进行查询,您可以将 p0p1p2 分别更新为 yearmonthday
    • 如果将分区样式更新为 HIVE 样式,则分区字段不可变。
  • 更新其他元数据字段:您可以更新自动生成的 mimeType, CompressionFormat, <a\ l10n-encryption-href="4j47fNIJx6fHidLzUB36HWsP3kvJXL0i3UcbXDataplexIwKQtqc4criDhrFJJZ99IxDk 和JsonOptionsDataplex 发现功能将在下次运行时使用新值。</a>。

创建实体

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

删除实体

  • 提供 etag 字段。您可以通过以下方式获取 etag:首先提交 entities.get 请求,在响应中返回实体的 etag

如果原始区域中表或文件集的基础数据被删除,则系统会在进行下一次发现扫描时自动删除表或文件集元数据。如果精选区域中表的基础数据被删除,则表元数据不会相应地删除,而是报告缺失的数据操作。如需解决此问题,请通过 metadata API 明确删除表元数据实体。

隔断

列出分区

如需限制服务返回的分区列表,请将 filter 查询参数添加到 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},则获取请求网址应以 /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#/SunnyvaleUS%3A/CA%3A/Sunnyvale

后续步骤