Utilizzare Lakehouse cross-cloud

Lakehouse per Apache Iceberg supporta l'esecuzione di query sui dati remoti tramite una configurazione Lakehouse cross-cloud. Una volta configurato, il sistema supporta l'accesso ai dati utilizzando SQL standard in BigQuery o Apache Spark in Managed Service for Apache Spark.

Questa pagina mostra come eseguire query sui dati remoti dopo aver configurato un Lakehouse cross-cloud.

Prima di iniziare

Prima di poter eseguire query sui dati, devi completare le seguenti operazioni:

  1. Configura Lakehouse cross-cloud per AWS Glue o Databricks Unity Catalog.
  2. Assicurati di avere dati nel catalogo remoto.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per eseguire query sui dati federati, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto:

Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Esegui query sui dati

Dopo aver configurato la federazione, puoi eseguire query sui dati remoti utilizzando SQL standard in BigQuery o Apache Spark in Managed Service for Apache Spark.

Lakehouse gestisce la traduzione dei metadati e l'accesso sicuro ai dati, il che ti consente di trattare le tabelle Apache Iceberg remote come se fossero locali al tuo Google Cloud ambiente.

Esegui query da BigQuery

Per eseguire query sulle tabelle Apache Iceberg federate, utilizza SQL BigQuery standard. Il percorso della tabella segue una struttura in 4 parti: project.federated_catalog.namespace.table. La memorizzazione nella cache, la distribuzione delle credenziali e il routing di transito CCI vengono gestiti automaticamente.

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;

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del tuo Google Cloud progetto.
  • FEDERATED_CATALOG_NAME: il nome del catalogo federato.
  • NAMESPACE_NAME: lo spazio dei nomi all'interno del catalogo.
  • TABLE_NAME: il nome della tabella.
  • REGION: la Google Cloud regione. Ad esempio, us-east4.

Puoi anche eseguire la query utilizzando lo strumento a riga di comando 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"

Esegui query da Managed Service for Apache Spark

Puoi leggere i dati di Lakehouse cross-cloud direttamente dai cluster Managed Service for Apache Spark senza gestire credenziali AWS separate o connettori S3. Spark si connette direttamente a Lakehouse utilizzando l'interfaccia standard del catalogo REST di Apache Iceberg, anziché l'API BigQuery Storage Read.

Se configuri il job Managed Service for Apache Spark con l'endpoint REST di Lakehouse, Lakehouse fornisce automaticamente a Spark credenziali S3 temporanee e con ambito tramite X-Iceberg-Access-Delegation=vended-credentials. In questo modo, Spark può leggere i dati sottostanti in modo sicuro, rispettando la configurazione del catalogo.

Per configurare il job Managed Service for Apache Spark con l'endpoint REST di Lakehouse:

  1. Configura il job Spark.

    In questo comando, trasmetti le proprietà del catalogo REST di Apache Iceberg quando invii il job Spark. In questo modo, il catalogo Lakehouse federato viene mappato a un nome di catalogo Spark locale (ad esempio, my_catalog):

    gcloud dataproc jobs submit pyspark PYSPARK_SCRIPT_PATH \
      --cluster="CLUSTER_NAME" \
      --region="REGION" \
      --properties="spark.sql.catalog.SPARK_CATALOG_NAME=org.apache.iceberg.spark.SparkCatalog,\
    spark.sql.catalog.SPARK_CATALOG_NAME.type=rest,\
    spark.sql.catalog.SPARK_CATALOG_NAME.uri=https://biglake.googleapis.com/iceberg/v1/restcatalog,\
    spark.sql.catalog.SPARK_CATALOG_NAME.warehouse=bl://projects/PROJECT_ID/catalogs/FEDERATED_CATALOG_NAME,\
    spark.sql.catalog.SPARK_CATALOG_NAME.io-impl=org.apache.iceberg.aws.s3.S3FileIO,\
    spark.sql.catalog.SPARK_CATALOG_NAME.header.X-Iceberg-Access-Delegation=vended-credentials,\
    spark.sql.catalog.SPARK_CATALOG_NAME.rest-metrics-reporting-enabled=false,\
    spark.sql.catalog.SPARK_CATALOG_NAME.header.x-goog-user-project=PROJECT_ID"
  2. Esegui query sui dati in PySpark.

    Questo comando utilizza Spark per leggere direttamente dal catalogo Lakehouse, quindi esegue una trasformazione standard.

    df = spark.table("SPARK_CATALOG_NAME.NAMESPACE_NAME.TABLE_NAME")
    df.filter(df.action == "purchase").show()

    Sostituisci quanto segue:

    • PYSPARK_SCRIPT_PATH: il percorso del job PySpark.
    • CLUSTER_NAME: il nome del cluster Managed Service for Apache Spark.
    • REGION: la Google Cloud regione. Ad esempio, us-east4.
    • PROJECT_ID: l'ID del tuo Google Cloud progetto.
    • SPARK_CATALOG_NAME: il nome che vuoi utilizzare per il catalogo Spark.
    • FEDERATED_CATALOG_NAME: il nome del catalogo federato.
    • NAMESPACE_NAME: lo spazio dei nomi all'interno del catalogo.
    • TABLE_NAME: il nome della tabella.

Passaggi successivi