本指南介绍了 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.entities 和 lakes.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 设为SCHEMA
或FULL
,则此设置会包含在entities.get
请求返回的信息中。
- 更新分区字段:
- 对于非 Hive 样式的分区数据,Dataplex 发现功能
自动生成分区键。例如,对于数据路径
gs://root/2020/12/31
,分区键p0
,p1
和p2
。为了让查询更直观,您可以将p0
、p1
和p2
分别更新为year
、month
和day
。 - 如果您将分区样式更新为 HIVE 样式 分区字段不可变
- 对于非 Hive 样式的分区数据,Dataplex 发现功能
自动生成分区键。例如,对于数据路径
- 更新其他元数据字段:您可以更新自动生成的 mimeType, CompressionFormat、 CsvOptions 和 JsonOptions 有助于发现 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
。
后续步骤
- 详细了解如何在 Apache Spark 中访问元数据。