Apache Iceberg REST カタログのコンセプト

このドキュメントでは、BigLake metastore Apache Iceberg REST カタログの概要について説明します。これには、リソース階層とサポートされているカタログ タイプが含まれます。

BigLake Metastore の Apache Iceberg REST カタログは、リソースの階層を使用してデータを整理します。次の表に、これらのリソースの概要を示します。

リソース階層

リソース 説明
カタログ 最上位のコンテナであるカタログを使用すると、Namespace とテーブルを異なるカタログに分割して、論理グループに整理できます。
名前空間 カタログ内のテーブルを整理するために使用される論理グループ。データベース、スキーマ、ディレクトリのように機能します。
テーブル テーブルには、クエリ可能な行と列の定義が含まれています。

サポートされているカタログ タイプ

クライアントを構成するときに、ウェアハウスのロケーションを指定します。この選択により、カタログの動作と他の Google Cloudサービスとの統合方法が決まります。次の表に、サポートされているカタログ タイプを示します。

カタログ タイプ 説明
Cloud Storage バケット カタログ内のすべてのデータは単一の Cloud Storage バケットに保存されます。複数のバケット間で共有されるデータには、複数のカタログが必要です。
BigQuery フェデレーション Iceberg REST カタログを使用して、BigQuery に表示されるテーブルの管理とクエリを実行できます。詳細については、BigQuery とのカタログ連携をご覧ください。

カタログ ウェアハウスの詳細

推奨

  • Cloud Storage バケット ウェアハウス(gs://: これは、カタログが指定した Cloud Storage バケット内の Iceberg メタデータとデータファイルを直接管理する標準的なアプローチです。このオプションを使用すると、データ レイアウトを直接制御でき、きめ細かいアクセス制御のための認証情報ベンダーがサポートされます。これにより、Apache Iceberg 用の BigLake テーブルを作成して管理できます。

    たとえば、カタログを保存するためにバケットを作成し、そのバケットに iceberg-bucket という名前を付けた場合、カタログ名とバケット名の両方が iceberg-bucket になります。これは、後で BigQuery でカタログをクエリするときに P.C.N.T 構文を使用して使用されます。たとえば、my-project.biglake-catalog-id.quickstart_namespace.quickstart_table のようにします。

旧 SKU

  • BigQuery 連携(bq://: この方法では、カタログ リソースを作成しなくても、Iceberg REST カタログを使用して BigQuery に表示されるテーブルを管理し、クエリを実行できます。詳細については、BigQuery とのカタログ連携をご覧ください。

P.C.N.T の命名規則

BigQuery から BigLake Metastore テーブルをクエリする場合は、4 つの部分からなる命名構造を使用します。これは P.C.N.T と呼ばれることがよくあります。

  • Project: カタログを所有する Google Cloud プロジェクト ID。
  • Catalog: BigLake metastore カタログの名前。
  • Namespace: Iceberg 名前空間(BigQuery データセットに相当)。
  • Table: テーブルの名前。

例: my-project.biglake-catalog-id.my-namespace.my-table

BigQuery とのカタログ連携

Iceberg REST カタログ インターフェースを使用して、BigQuery に表示されるテーブルを管理し、クエリを実行できます。BigQuery 連携カタログでは、カタログ リソースを作成する必要はありません。BigQuery API が有効になっているプロジェクトで使用できます。この機能には次のような利点があります。

これらのリソースは BigQuery によって管理されるため、該当する必要な権限が必要です。連携カタログでは認証情報のベンディングはサポートされていません。

フェデレーションを有効にするには、Iceberg REST カタログを使用するのクライアント構成例の WAREHOUSE_PATH フィールドで、bq://projects/PROJECT_ID ウェアハウス形式を使用してクライアントを構成します。bq://projects/PROJECT_ID/locations/LOCATION 形式を使用して BigQuery のロケーションを含め、今後のリクエストを単一のロケーションに制限することもできます。