メタデータ連携は、1 つのエンドポイントから複数のメタデータ ソースにアクセスできるようにするサービスです。
連携を設定するには、連携サービスを作成し、メタデータ ソースを構成します。その後、サービスはすべてのメタデータにアクセスするために使用する 1 つの gRPC エンドポイントを公開します。
たとえば、連携を使用すると、単一のエンドポイントを介して複数の Dataproc Metastore サービスを公開する Managed Service for Apache Spark クラスタを作成できます。その後、Spark や Hive などのオープンソース ソフトウェア(OSS)エンジンを介してビッグデータ ジョブを実行し、複数のメタストアにわたってメタデータにアクセスできます。
連携の仕組み
Spark または Hive で実行される OSS ビッグデータ ワークロードは、実行時にメタデータを取得するために Hive Metastore API にリクエストを送信します。
- Hive Metastore インターフェース では、読み取りと書き込みの両方のメソッドがサポートされています。連携サービスは、Hive Metastore インターフェースの gRPC バージョンを公開します。
- 実行時に、連携サービスはリクエストを受信すると、ソースの順序を確認して適切なメタデータを取得します。
メタデータの入手先
連携サービスを作成するときは、メタデータ ソースを追加する必要があります。 バックエンド メタストアとして次のソースを使用できます。
- Dataproc Metastore インスタンス。
- 1 つ以上の BigQuery データセットを含むプロジェクト。
- Knowledge Catalog レイク(プレビュー)。
ソースの制限
次のセクションでは、さまざまなメタデータのソースを使用する際に遵守する必要がある制限を示します。
ソース総数
すべてのメタデータ ソースに次の制限が適用されます。
- 連携サービスには独自のデータは含まれません。代わりに、連携サービスはメタデータ ソースの一つからのみメタデータを提供します。
- 連携サービスは、別の連携サービスのメタデータのソースにすることはできません。
Dataproc Metastore
Dataproc Metastore をソースとして使用している場合は、次の制限が適用されます。
- 連携サービスは、gRPC エンドポイントを介してのみ利用できます。連携で Dataproc Metastore を使用するには、 gRPC エンドポイントを使用してメタストアを作成します。
BigQuery
BigQuery データセットをソースとして含むプロジェクトを使用している場合は、次の条件を満たす必要があります。
- BigQuery データセットを含むプロジェクトにアクセスするための適切な Identity and Access Management ロールを付与します。
- BigQuery データセットとともに、少なくとも 1 つの Dataproc Metastore サービスをソースとして追加します。
Knowledge Catalog レイク
dataplex.lakes.get権限を含む IAM ロールを付与します。- Knowledge Catalog レイクとともに、少なくとも 1 つの Dataproc Metastore サービスをソースとして追加します。
ソースの順序付け
連携サービスは、優先度順にメタデータ リクエストを処理します。この概念をソースの順序付けといいます。実行時に、連携サービスはリクエストを受信すると、ソースの順序を確認して次のいずれかのアクションを完了します。
- リクエストにデータベース名が含まれている場合 。リクエストは、データベース名を含むバックエンド メタストアに転送されます。複数のメタストアに同じデータベース名が含まれている場合、リクエストはランクが最も低いメタストアに転送されます。
- リクエストでデータベースが作成または削除された場合。リクエストは、ランクが最も低いメタストアに転送されます。
- リクエストにデータベース名が含まれておらず、データベースが作成または
削除されない場合。リクエストは、ランクが最も低い Dataproc Metastore インスタンスに転送されます。データベースを指定しない Hive Metastore リクエストの例としては、
set_ugiとcreate_databaseがあります。 - どのメタストアにもデータベースが含まれていない場合 。OSS エンジンが、notFound エラーと同等のレスポンスを返します。