In Lakehouse senza confini, una connessione cross-cloud ti consente di accedere ai dati remoti da piattaforme esterne senza spostare i file tra ambienti cloud. Puoi quindi eseguire query sulle tabelle federate da BigQuery, Managed Service for Apache Spark o Apache Spark open source.
Oltre alle query analitiche, puoi utilizzare i dati federati per insight e governance basati sull'AI:
- Analisi conversazionale: crea agenti specializzati basati sulle tue origini dati, incluse le tabelle federate, per analizzare i dati su più cloud da un'unica conversazione.
- Knowledge Catalog: profila i dati e genera insight sulle origini dati federate.
Per un'analisi più approfondita, puoi creare agenti di analisi conversazionale che utilizzano progetti, set di dati, tabelle, viste, grafici e funzioni definite dall'utente. Questi agenti operano su tabelle standard BigQuery, tabelle Apache Iceberg gestite da Lakehouse e origini Lakehouse come Databricks Unity Catalog, AWS Glue, SAP BDC e Salesforce.
Prima di iniziare
Prima di poter eseguire query sui dati, devi completare i seguenti passaggi:
- Assicurati di avere dati nel catalogo remoto.
- Configura una connessione cross-cloud per AWS Glue, Databricks Unity Catalog, Snowflake Horizon Catalog, Workday Data Lake o SAP Business Data Cloud.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per eseguire query sui dati federati, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto:
-
Eseguire query sui dati in BigQuery:
Visualizzatore dati BigQuery (
roles/bigquery.dataViewer) -
Eseguire job BigQuery:
Utente job BigQuery (
roles/bigquery.jobUser) -
Scopri e leggi i metadati delle tabelle nei cataloghi Lakehouse:
BigLake Viewer (
roles/biglake.viewer)
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, consentendoti di trattare le tabelle Apache Iceberg remote come se fossero locali nel tuo ambiente Google Cloud .
Query da BigQuery
Per eseguire query sulle tabelle Apache Iceberg federate, utilizza BigQuery SQL standard. Il percorso della tabella segue una struttura in quattro parti:
project.federated_catalog.namespace.table. La distribuzione delle credenziali, il routing transitivo CCI e la memorizzazione nella cache cross-cloud (se abilitata nel catalogo) vengono gestiti automaticamente da Google Cloud.
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: il tuo ID progetto Google Cloud .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 regione Google Cloud . 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
Invia un workload batch PySpark a Managed Service for Apache Spark con l'erogazione delle credenziali abilitata utilizzando X-Iceberg-Access-Delegation=vended-credentials. Spark utilizzerà le credenziali con ambito di breve durata per connettersi a S3 in modo sicuro, il tutto senza dover gestire credenziali AWS o connettori S3 separati.
Abilita la connettività in uscita per Managed Service for Apache Spark.
Managed Service for Apache Spark non può connettersi ad AWS S3 con la sua configurazione di rete predefinita. Devi eseguire il provisioning di un router Cloud e di 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
Sostituisci quanto segue:
NETWORK_NAME: la rete per il workload batch di Managed Service for Apache Spark (ad esempiodefault).REGION: la regione del workload batch Managed Service for Apache Spark.
Creare un file dell'applicazione PySpark ed eseguire il job 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)
Carica questo file su Cloud Storage all'indirizzo
PYSPARK_FILE.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.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions"
Sostituisci quanto segue:
NAMESPACE_NAME: lo spazio dei nomi nel catalogo federato.TABLE_NAME: il nome della tabella nel catalogo federato.CATALOG_NAME: un nome per il catalogo Spark locale (ad esempiomy_catalog).PYSPARK_FILE: il percorso Cloud Storagegs://del file dell'applicazione PySpark.REGION: la regione del workload batch Managed Service for Apache Spark.RUNTIME_VERSION: la versione di runtime di Managed Service for Apache Spark, ad esempio2.3.PROJECT_ID: il progetto a cui viene addebitato l'utilizzo dell'endpoint del catalogo REST Apache Iceberg.FEDERATED_CATALOG_NAME: il nome del catalogo federato.IO_IMPL: l'implementazione FileIO corrispondente allo spazio di archiviazione sottostante.
Parametri di configurazione di Spark
La tabella seguente elenca i parametri comuni richiesti per tutte le connessioni:
Parametro Descrizione spark.sql.defaultCatalogIl nome del catalogo predefinito (ad esempio CATALOG_NAME).spark.sql.catalog.CATALOG_NAMELa classe di implementazione del catalogo. Da impostare su org.apache.iceberg.spark.SparkCatalog.spark.sql.catalog.CATALOG_NAME.typeIl tipo di backend del catalogo. Impostato su restper il catalogo REST Iceberg.spark.sql.catalog.CATALOG_NAME.uriL'URI dell'endpoint del catalogo REST. Da impostare su https://biglake.googleapis.com/iceberg/v1/restcatalog.spark.sql.catalog.CATALOG_NAME.warehouseIl percorso della posizione del warehouse per il catalogo federato. Da impostare su bl://projects/PROJECT_ID/catalogs/FEDERATED_CATALOG_NAME.spark.sql.catalog.CATALOG_NAME.header.x-goog-user-projectL'ID progetto Google Cloud utilizzato per l'attribuzione della fatturazione e della quota. Da impostare su PROJECT_ID.spark.sql.extensionsLe estensioni della sessione Spark per la sintassi e le funzionalità SQL di Iceberg. Da impostare su org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions.La tabella seguente elenca i parametri di autenticazione:
Parametro Descrizione spark.sql.catalog.CATALOG_NAME.rest.auth.typeLa classe del gestore di autenticazione personalizzato. Imposta su org.apache.iceberg.gcp.auth.GoogleAuthManagerper l'autenticazione del flusso OAuth.spark.sql.catalog.CATALOG_NAME.oauth2-server-uriL'URI dell'endpoint del server di token OAuth2. Imposta su https://oauth2.googleapis.com/tokenper l'autenticazione con token di accesso personale (PAT).spark.sql.catalog.CATALOG_NAME.tokenIl token di connessione o il token di accesso personale (PAT). In genere impostato su $(gcloud auth application-default print-access-token)per l'autenticazione PAT.La tabella seguente elenca i parametri univoci in base al provider di archiviazione (
IO_IMPL):Archiviazione spark.sql.catalog.CATALOG_NAME.io-implNote Amazon S3 org.apache.iceberg.aws.s3.S3FileIORichiede la distribuzione delle credenziali ( X-Iceberg-Access-Delegation=vended-credentials), se abilitata.
Parametro aggiuntivo:spark.sql.catalog.CATALOG_NAME.s3.region(per un elenco delle regioni, consulta Endpoint e quote di Amazon S3).Cloud Storage org.apache.iceberg.gcp.gcs.GCSFileIOParametro aggiuntivo: spark.sql.catalog.CATALOG_NAME.gcs.oauth2.refresh-credentials-endpoint=https://oauth2.googleapis.com/token.Azure Blob Storage org.apache.iceberg.azure.adlsv2.ADLSFileIONon sono richiesti parametri di archiviazione aggiuntivi. Per Snowflake, potresti riscontrare problemi durante l'esecuzione di query sulle colonne
STRINGperché sono ottimizzate automaticamente per lo spazio di archiviazione. Puoi risolvere il problema in uno dei due modi seguenti:- Opzione 1: disattiva la vettorizzazione in Spark: aggiungi le seguenti proprietà di configurazione di Spark al flag
--properties: spark.sql.iceberg.vectorization.enabled=falsespark.sql.catalog.CATALOG_NAME.table-override.read.parquet.vectorization.enabled=falseOpzione 2: modifica la policy di serializzazione in Snowflake: modifica la policy di serializzazione dello spazio di archiviazione in
COMPATIBLEper la tabella in Snowflake.
Monitora l'utilizzo della cache e i risparmi sui costi in uscita
Quando attivi la memorizzazione nella cache cross-cloud su un catalogo federato o una connessione BigQuery, Lakehouse memorizza nella cache i blocchi di file recuperati localmente nella regione di esecuzione delle query Google Cloud . Le query successive, incluse query diverse che hanno come target gli stessi blocchi di file, leggono direttamente dalla cache locale anziché recuperare nuovamente i file dal cloud remoto.
Per verificare le percentuali di successo della cache e misurare i risparmi sui costi in uscita, controlla i dettagli del job nella console BigQuery o recupera le statistiche del job di query JobStatistics2 utilizzando l'API BigQuery o lo strumento a riga di comando bq:
bq show --format=prettyjson --job=true JOB_ID
Sostituisci JOB_ID con l'ID del tuo job di query BigQuery.
Nell'output JSON in statistics.query.objectStorageStats (o
object_storage_stats nell'API proto), le statistiche del job restituiscono un elenco con
una voce per ogni cloud provider a cui è stato eseguito l'accesso durante l'esecuzione. Ogni voce contiene i seguenti campi:
cloudProvider(cloud_provider): il cloud provider che ospita l'archivio di oggetti (ad esempioAWSoAZURE).cacheBytesRead(cache_bytes_read): i byte totali letti dalla cache Google Cloud locale, evitando una lettura dello spazio di archiviazione degli oggetti remoto.objectStorageBytesRead(object_storage_bytes_read): i byte totali letti direttamente dallo spazio di archiviazione degli oggetti del provider cloud.
Per saperne di più sui concetti di memorizzazione nella cache e sulle considerazioni relative alla residenza dei dati, consulta Memorizzazione nella cache intelligente.