Lakehouse for Apache Iceberg は、ボーダーレスな Lakehouse 構成によるリモートデータのクエリをサポートしています。 構成が完了すると、BigQuery の標準 SQL、Apache Spark のオープンソース バージョン、Managed Service for Apache Spark を使用してデータアクセスできます。分析クエリに加えて、連携データを使用して AI 主導の分析情報とガバナンスを実現できます。
- 会話型分析: クロスクラウド テーブルなど、正確なデータソースに基づいた専門エージェントを構築して、単一の会話からクラウド間でデータを分析します。
- Dataplex Catalog: 連携データソースを使用して、データ プロファイリングと分析情報に Knowledge Catalog 機能を使用します。
より詳細な分析情報については、プロジェクト、データセット、テーブルからビュー、グラフ、ユーザー定義関数まで、データソースに基づいた専門エージェントを作成できます。データが 1 か所に保存されることはほとんどないため、会話型分析機能は BigQuery Standard テーブルだけでなく、Lakehouse で管理される Apache Iceberg テーブルや、Databricks Unity、AWS Glue、SAP、Salesforce などのボーダーレスな Lakehouse ソースにも対応しています。これにより、データサイロを解消し、単一の会話からクラウド間でデータを分析できます。
このページでは、ボーダーレスな Lakehouse を設定した後、リモートデータをクエリする方法について説明します。
始める前に
データをクエリする前に、次の操作を完了する必要があります。
- AWS Glue、Databricks Unity Catalog、または Snowflake 用のボーダーレスな Lakehouse を設定します。
- リモート カタログにデータがあることを確認します。
必要なロール
連携データをクエリするために必要な権限を取得するには、プロジェクトに対して次の IAM ロールを付与するよう管理者に依頼してください。
-
BigQuery でデータをクエリする:
BigQuery データ閲覧者 (
roles/bigquery.dataViewer) -
BigQuery ジョブを実行する:
BigQuery ジョブユーザー (
roles/bigquery.jobUser) -
Lakehouse カタログでテーブル メタデータを検出して読み取る:
BigLake 閲覧者 (
roles/biglake.viewer)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
データのクエリ
連携を設定したら、BigQuery の標準 SQL または Managed Service for Apache Spark の Apache Spark を使用してリモートデータをクエリできます。
Lakehouse は、メタデータの変換と安全なデータ アクセスを処理します。これにより、リモートの Apache Iceberg テーブルを自分の環境のローカル テーブルとして扱うことができます。 Google Cloud
BigQuery からクエリする
連携された Apache Iceberg テーブルをクエリするには、標準の BigQuery SQL を使用します。テーブルパスは、project.federated_catalog.namespace.table
という 4 つの部分で構成されます。キャッシュ、認証情報の提供、CCI 転送ルーティングは自動的に処理されます。
SELECT user_id, action, COUNT(*) as total_actions FROM `PROJECT_ID.FEDERATED_CATALOG_NAME.NAMESPACE_NAME.TABLE_NAME` WHERE event_date >= '2026-04-01' GROUP BY 1, 2;
次のように置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト ID。FEDERATED_CATALOG_NAME: 連携カタログの名前。NAMESPACE_NAME: カタログ内の Namespace。TABLE_NAME: テーブルの名前。REGION: の Google Cloud リージョン。例:us-east4
bq コマンドライン ツールを使用してクエリを実行することもできます。
bq --location="REGION" --project_id="PROJECT_ID" query --use_legacy_sql=false \ "SELECT * FROM \`PROJECT_ID.FEDERATED_CATALOG_NAME.NAMESPACE_NAME.TABLE_NAME\` LIMIT 10"
Managed Service for Apache Spark からクエリする
認証情報の提供を有効にして、PySpark バッチ ワークロードを Managed Service for Apache Spark に送信します。X-Iceberg-Access-Delegation=vended-credentialsSpark は、有効期間の短いスコープ付きの提供された認証情報を使用して S3 に安全に接続します。AWS 認証情報や S3 コネクタを個別に管理する必要はありません。
Managed Service for Apache Spark のアウトバウンド接続を有効にします。
Managed Service for Apache Spark は、デフォルトの ネットワーク構成では AWS S3 に接続できません。Cloud Router と Cloud NAT をプロビジョニングする必要があります。
gcloud compute routers create lakehouse-router \ --network=NETWORK_NAME \ --region=REGION gcloud compute routers nats create lakehouse-nat \ --router=lakehouse-router \ --auto-allocate-nat-external-ips \ --nat-all-subnet-ip-ranges \ --region=REGION
次のように置き換えます。
NETWORK_NAME: Managed Service for Apache Spark バッチ ワークロードのネットワーク(例:default)。REGION: Managed Service for Apache Spark バッチ ワークロードのリージョン。
PySpark アプリケーション ファイルを作成し、PySpark ジョブを実行します。
from pyspark.sql import SparkSession spark = SparkSession.builder.appName("CATALOG_NAME").getOrCreate() df = spark.table("CATALOG_NAME.NAMESPACE_NAME.TABLE_NAME") df.show(10, truncate=False)
これを
PYSPARK_FILEの Cloud Storage にアップロードします。gcloud dataproc batches submit pyspark PYSPARK_FILE \ --project=PROJECT_ID \ --region=REGION \ --version=RUNTIME_VERSION \ --properties="\ spark.sql.defaultCatalog=CATALOG_NAME,\ spark.sql.catalog.CATALOG_NAME=org.apache.iceberg.spark.SparkCatalog,\ spark.sql.catalog.CATALOG_NAME.type=rest,\ spark.sql.catalog.CATALOG_NAME.uri=https://biglake.googleapis.com/iceberg/v1/restcatalog,\ spark.sql.catalog.CATALOG_NAME.warehouse=bl://projects/PROJECT_ID/catalogs/FEDERATED_CATALOG_NAME,\ spark.sql.catalog.CATALOG_NAME.header.x-goog-user-project=PROJECT_ID,\ spark.sql.catalog.CATALOG_NAME.rest.auth.type=org.apache.iceberg.gcp.auth.GoogleAuthManager,\ spark.sql.catalog.CATALOG_NAME.io-impl=IO_IMPL,\ spark.sql.catalog.CATALOG_NAME.header.X-Iceberg-Access-Delegation=vended-credentials,\ spark.sql.catalog.CATALOG_NAME.rest-metrics-reporting-enabled=false,\ spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions"
次のように置き換えます。
NAMESPACE_NAME: 連携カタログの Namespace。TABLE_NAME: 連携カタログ内のテーブルの名前。CATALOG_NAME: ローカル Spark カタログの名前(例:my_catalog)。PYSPARK_FILE: PySpark アプリケーション ファイルへのgs://Cloud Storage パス。REGION: Managed Service for Apache Spark バッチ ワークロードのリージョン。RUNTIME_VERSION: Managed Service for Apache Spark ランタイム バージョン(例:2.3)。PROJECT_ID: Apache Iceberg REST カタログ エンドポイントの使用に対して課金されるプロジェクト。FEDERATED_CATALOG_NAME: 連携カタログの名前。IO_IMPL: 基盤となるストレージに一致する FileIO 実装。
Spark 構成パラメータ
次の表に、すべての接続に必要な一般的なパラメータを示します。
パラメータ 説明 spark.sql.defaultCatalogデフォルトのカタログ名(例: CATALOG_NAME)。spark.sql.catalog.CATALOG_NAMEカタログ実装クラス。 org.apache.iceberg.spark.SparkCatalogに設定します。spark.sql.catalog.CATALOG_NAME.typeカタログ バックエンドのタイプ。Iceberg REST カタログの場合は restに設定します。spark.sql.catalog.CATALOG_NAME.uriREST カタログ エンドポイントの URI。 https://biglake.googleapis.com/iceberg/v1/restcatalogに設定します。spark.sql.catalog.CATALOG_NAME.warehouse連携カタログのウェアハウスの場所のパス。 bl://projects/PROJECT_ID/catalogs/FEDERATED_CATALOG_NAMEに設定します。spark.sql.catalog.CATALOG_NAME.header.x-goog-user-project課金と割り当てに使用される Google Cloud プロジェクト ID。 PROJECT_IDに設定します。spark.sql.extensionsIceberg SQL 構文と機能の Spark セッション拡張機能。 org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensionsに設定します。次の表に、認証パラメータを示します。
パラメータ 説明 spark.sql.catalog.CATALOG_NAME.rest.auth.typeカスタム認証マネージャー クラス。OAuth フロー認証の場合は org.apache.iceberg.gcp.auth.GoogleAuthManagerに設定します。spark.sql.catalog.CATALOG_NAME.oauth2-server-uriOAuth2 トークン サーバー エンドポイント URI。個人用アクセス トークン(PAT)認証の場合は https://oauth2.googleapis.com/tokenに設定します。spark.sql.catalog.CATALOG_NAME.tokenBearer トークンまたは個人用アクセス トークン(PAT)。通常、PAT 認証の場合は $(gcloud auth application-default print-access-token)に設定します。次の表に、ストレージ プロバイダ(
IO_IMPL)に基づく一意のパラメータを示します。ストレージ spark.sql.catalog.CATALOG_NAME.io-implメモ Amazon S3 org.apache.iceberg.aws.s3.S3FileIO有効になっている場合は、認証情報の提供( X-Iceberg-Access-Delegation=vended-credentials)が必要です。
追加パラメータ:spark.sql.catalog.CATALOG_NAME.s3.region(リージョンの一覧については、Amazon S3 エンドポイントとクォータをご覧ください)。Google Cloud Storage org.apache.iceberg.gcp.gcs.GCSFileIO追加パラメータ: spark.sql.catalog.CATALOG_NAME.gcs.oauth2.refresh-credentials-endpoint=https://oauth2.googleapis.com/token。Azure Blob Storage org.apache.iceberg.azure.adlsv2.ADLSFileIO追加のストレージ パラメータは必要ありません。 Snowflake では、
STRING列が自動的にストレージ最適化されるため、クエリを実行する際に問題が発生することがあります。この問題を解決するには、次のいずれかの方法を使用します。- オプション 1: Spark でベクトル化を無効にする: 次の Spark 構成プロパティを
--propertiesフラグに追加します。 spark.sql.iceberg.vectorization.enabled=falsespark.sql.catalog.CATALOG_NAME.table-override.read.parquet.vectorization.enabled=falseオプション 2: Snowflake でシリアル化ポリシーを変更する: Snowflake のテーブルのストレージ シリアル化ポリシーを
COMPATIBLEに変更します。