本指南介绍了 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 请求。 您可以构建、查看和提交请求,而无需生成 凭据,然后查看服务返回的响应。
以下各部分提供的信息有助于您了解 使用 Dataplex Metadata API。
实体
列出实体
要限制服务返回的实体列表,请将
过滤条件
将查询参数添加到 list entities
请求网址中。
获取实体
默认情况下,Get Entity
响应包含基本实体
元数据。要检索其他架构元数据,请将
查看
查询参数。
兼容性详情:虽然 Dataplex 元数据可以
在 Metadata 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 提高其准确性:
- 如果架构是文件集,请保留全部 schema 字段为空。
- 要定义重复字段,请将
模式
发送至
REPEATED
。要定义结构体字段,请将 类型 发送至RECORD
。 - 您可以将
userManaged
字段,以指定是您自己还是 Dataplex 管理表元数据。默认设置为 Dataplex 受管理。如果userManaged
设为 true,则此设置会 包含在从entities.get
返回的信息中 请求 EntityView 设置为SCHEMA
或FULL
。
- 更新分区字段:
<ph type="x-smartling-placeholder">
- </ph>
- 对于非 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
字段。要获取 ETag,首先要提交一个
entities.get 请求,
该函数在响应中返回实体的
etag
。
如果原始可用区中表或文件集的基础数据被删除, 文件集元数据会在下次 发现扫描。如果精选可用区中表的底层数据 则表元数据不会相应地删除,而是缺失 数据操作。要解决此问题,请明确删除表 元数据实体。
分区
列出分区
如需限制服务返回的分区列表,请将
过滤条件
将查询参数添加到 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 中的元数据。