本指南介绍了 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.entities 和 lakes.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 设置为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, <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#/Sunnyvale
为 US%3A/CA%3A/Sunnyvale
。
后续步骤
- 详细了解如何在 Apache Spark 中访问元数据。