元数据联合是一项服务,可让您通过单个端点访问多个元数据来源。
如需设置联合,您需要创建联合服务,然后配置元数据源。之后,该服务会公开一个 gRPC 端点,您可以使用该端点访问所有元数据。
例如,使用联邦,您可以创建一个 Dataproc 集群,通过单个端点公开多个 Dataproc Metastore 服务。之后,您可以通过 Spark 或 Hive 等开源软件 (OSS) 引擎运行大数据作业,以访问多个元存储空间中的元数据。
联邦的运作方式
在 Spark 或 Hive 上运行的 OSS 大数据工作负载会向 Hive Metastore API 发送请求,以便在运行时提取元数据。
- Hive Metastore 接口支持读取和写入方法。联合服务公开了 gRPC 版本的 Hive Metastore 接口。
- 在运行时,当联邦服务收到请求时,它会检查来源排序以检索适当的元数据。
元数据来源
创建联邦服务时,您必须添加元数据源。您可以将以下来源用作后端元存储:
- Dataproc Metastore 实例。
- 包含一个或多个 BigQuery 数据集的项目。
- Dataplex 数据湖(预览版)。
来源限制
以下部分列出了使用各种元数据源时必须遵守的限制。
所有来源
以下限制适用于所有元数据源:
- 联合服务不包含自己的数据。而是,联合服务只会提供其某个元数据源中的元数据。
- 一个联合服务不能成为另一个联合服务中的元数据来源。
Dataproc Metastore
如果您使用 Dataproc Metastore 作为来源,则存在以下限制:
- 只有通过 gRPC 端点才能使用联合服务。如需将 Dataproc Metastore 与联邦搭配使用,请使用 gRPC 端点创建 Metastore。
- 联邦服务可以附加到任何单个区域中的单个区域 Dataproc Metastore 服务。联邦服务不支持多区域 Dataproc Metastore 服务。
BigQuery
如果您将包含 BigQuery 数据集的项目用作来源,则必须满足以下条件:
- 授予正确的 IAM 角色以访问包含 BigQuery 数据集的项目。
- 将至少一个 Dataproc Metastore 服务以及您的 BigQuery 数据集添加为来源。
Dataplex 数据湖
- 授予包含
dataplex.lakes.get
权限的 IAM 角色。 - 将至少一个 Dataproc Metastore 服务以及您的 Dataplex Lake 添加为来源。
来源排序
您的联合服务会按优先级顺序处理元数据请求。此概念称为来源排序。在运行时,当联邦服务收到请求时,它会检查来源排序,并执行以下操作之一:
- 如果请求包含数据库名称。系统会将请求路由到包含数据库名称的后端元存储。如果有多个元存储空间包含相同的数据库名称,系统会将请求路由到排名最低的元存储空间。
- 如果请求创建或删除数据库。系统会将请求路由到排名最低的元存储空间。
- 如果请求不包含数据库名称,并且不会创建或删除数据库。系统会将请求路由到排名最低的 Dataproc Metastore 实例。不指定数据库的 Hive Metastore 请求的一些示例包括
set_ugi
和create_database
。 - 如果所有元存储空间都不包含数据库。OSS 引擎会返回类似于“未找到”错误的响应。