Dopo aver configurato l'accesso ai dati cross-cloud, puoi eseguire query sui dati remoti da più origini. Questa funzionalità di Lakehouse senza confini ti consente di accedere ai dati utilizzando SQL standard in BigQuery, la versione open source di Apache Spark o Managed Service for Apache Spark. Oltre alle query analitiche, puoi utilizzare i dati federati per insight e governance basati sull'AI:
- Analisi conversazionale: Crea agenti specializzati basati sulle tue fonti di dati esatte, incluse le tabelle federate, per analizzare i dati su più cloud da un'unica conversazione.
- Dataplex Catalog: utilizza le funzionalità di Knowledge Catalog per la profilazione dei dati e gli approfondimenti con origini dati federate.
Per approfondire le informazioni, puoi creare agenti specializzati basati sulle tue origini dati, da progetti, set di dati e tabelle a viste, grafici e funzioni definite dall'utente. Poiché i tuoi dati raramente si trovano in un unico posto, l'analisi conversazionale va oltre le tabelle BigQuery Standard e raggiunge le tabelle Apache Iceberg gestite da Lakehouse e le origini Lakehouse come Databricks Unity, AWS Glue, SAP e Salesforce. In questo modo puoi abbattere i silo di dati e analizzare i dati su più cloud da un'unica conversazione.
Questa pagina mostra come eseguire query sui dati remoti dopo aver configurato l'accesso ai dati cross-cloud.
Prima di iniziare
Prima di poter eseguire query sui dati, devi completare le seguenti operazioni:
- 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:
-
Esegui query sui dati in BigQuery:
Visualizzatore dati BigQuery (
roles/bigquery.dataViewer) -
Esegui 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 per il tuo ambiente Google Cloud .
Query da BigQuery
Per eseguire query sulle tabelle Apache Iceberg federate, utilizza SQL BigQuery
standard. Il percorso della tabella segue una struttura in quattro 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: 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 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"
Query da Managed Service for Apache Spark
Invia un workload batch PySpark a Managed Service for Apache Spark con
distribuzione delle credenziali abilitata utilizzando
X-Iceberg-Access-Delegation=vended-credentials. Spark utilizzerà le credenziali
vendute con ambito di breve durata per connettersi a S3 in modo sicuro, 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 Managed Service for Apache Spark (ad esempio,default).REGION: la regione per il workload batch Managed Service for Apache Spark.
Crea un file dell'applicazione PySpark ed esegui 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 per il workload batch Managed Service for Apache Spark.RUNTIME_VERSION: la versione del 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 di FileIO corrispondente allo spazio di archiviazione sottostante.
Parametri di configurazione 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. Imposta su org.apache.iceberg.spark.SparkCatalog.spark.sql.catalog.CATALOG_NAME.typeIl tipo di backend del catalogo. Imposta restper il catalogo REST Iceberg.spark.sql.catalog.CATALOG_NAME.uriL'URI dell'endpoint del catalogo REST. Imposta su https://biglake.googleapis.com/iceberg/v1/restcatalog.spark.sql.catalog.CATALOG_NAME.warehouseIl percorso della posizione del magazzino per il catalogo federato. Imposta su bl://projects/PROJECT_ID/catalogs/FEDERATED_CATALOG_NAME.spark.sql.catalog.CATALOG_NAME.header.x-goog-user-projectL'ID progetto cloud Google Cloud utilizzato per l'attribuzione di fatturazione e quota. Imposta su PROJECT_ID.spark.sql.extensionsLe estensioni della sessione Spark per la sintassi e le funzionalità di Iceberg SQL. Imposta 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 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 dei token OAuth2. Imposta 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 tuo fornitore di spazio 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, vedi Endpoint e quote di Amazon S3).Google 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 necessari parametri di archiviazione aggiuntivi. Per Snowflake, potresti riscontrare problemi durante l'esecuzione di query sulle colonne
STRINGperché sono ottimizzate automaticamente per l'archiviazione. Puoi risolvere il problema in due modi:- 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 i criteri di serializzazione in Snowflake: modifica i criteri di serializzazione dell'archiviazione in
COMPATIBLEper la tabella in Snowflake.
Monitorare l'utilizzo della cache e il risparmio sui costi in uscita
La memorizzazione nella cache del lakehouse è abilitata automaticamente per tutte le query cross-cloud. Quando viene eseguita una query, Lakehouse memorizza automaticamente nella cache i blocchi di dati localmente all'interno dello spazio di archiviazione Google Cloud . Le query successive che hanno come target gli stessi blocchi di dati vengono lette direttamente dalla cache locale anziché recuperare di nuovo i dati dal cloud remoto.
Per verificare i successi della cache e misurare il risparmio sui costi in uscita, esamina i dettagli del job nella console BigQuery o recupera le statistiche del job di query (JobStatistics2) utilizzando l'API BigQuery o la CLI bq:
bq show --format=prettyjson --j JOB_ID
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 provider di servizi cloud a cui è stato eseguito l'accesso durante l'esecuzione. Ogni voce contiene i seguenti campi:
cloudProvider(cloud_provider): il provider di servizi cloud remoto che ospita l'object storage (ad esempio,AWSoAZURE).cacheBytesRead(cache_bytes_read): il numero totale di byte letti dalla cache Google Cloud locale, evitando una lettura dell'archiviazione di oggetti remota.objectStorageBytesRead(object_storage_bytes_read): il totale dei byte letti direttamente dallo spazio di archiviazione degli oggetti del provider cloud remoto.
Per ulteriori informazioni sui concetti di memorizzazione nella cache e sulle considerazioni sulla residenza dei dati, vedi Memorizzazione nella cache intelligente.