本指南介绍了 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 面板,使用不同的参数和字段发出 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 设为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 发现功能将在下次运行时使用新值。
创建实体
使用 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 中访问元数据。