Nachdem Sie den cloudübergreifenden Datenzugriff eingerichtet haben, können Sie Remote-Daten aus mehreren Quellen abfragen. Mit dieser Funktion des grenzenlosen Lakehouse können Sie mit Standard-SQL in BigQuery, der Open-Source-Version von Apache Spark oder Managed Service for Apache Spark auf Daten zugreifen. Neben Analyseabfragen können Sie Ihre föderierten Daten auch für KI-basierte Statistiken und Governance verwenden:
- Konversationelle Analyse: Erstellen Sie spezialisierte KI-Agenten, die auf Ihren genauen Datenquellen basieren, einschließlich föderierter Tabellen, um Daten cloudübergreifend in einer einzigen Konversation zu analysieren.
- Dataplex Catalog: Verwenden Sie Knowledge Catalog-Funktionen für die Datenprofilerstellung und ‑statistiken mit föderierten Datenquellen.
Für detailliertere Informationen können Sie spezielle Agents erstellen, die auf Ihren Datenquellen basieren, von Projekten, Datasets und Tabellen bis hin zu Ansichten, Diagrammen und benutzerdefinierten Funktionen. Da Ihre Daten selten an einem Ort gespeichert sind, geht die Konversationsanalyse über BigQuery-Standardtabellen hinaus und umfasst von Lakehouse verwaltete Apache Iceberg-Tabellen und Lakehouse-Quellen wie Databricks Unity, AWS Glue, SAP und Salesforce. So können Sie Datensilos aufbrechen und Daten cloudübergreifend in einem einzigen Gespräch analysieren.
Auf dieser Seite wird beschrieben, wie Sie Remote-Daten abfragen, nachdem Sie den cloudübergreifenden Datenzugriff eingerichtet haben.
Hinweis
Bevor Sie Ihre Daten abfragen können, müssen Sie Folgendes tun:
- Prüfen Sie, ob Ihr Remote-Katalog Daten enthält.
- Richten Sie eine cloudübergreifende Verbindung für AWS Glue, Databricks Unity Catalog, Snowflake Horizon Catalog, Workday Data Lake oder SAP Business Data Cloud ein.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für das Projekt zuzuweisen, damit Sie die nötigen Berechtigungen zum Abfragen von föderierten Daten haben:
-
Daten in BigQuery abfragen:
BigQuery-Datenbetrachter (
roles/bigquery.dataViewer) -
BigQuery-Jobs ausführen:
BigQuery Job User (
roles/bigquery.jobUser) -
Tabellenmetadaten in Lakehouse-Katalogen ansehen und lesen:
BigLake Viewer (
roles/biglake.viewer)
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Daten abfragen
Nachdem Sie die Föderation eingerichtet haben, können Sie Ihre Remotedaten mit Standard-SQL in BigQuery oder Apache Spark im Managed Service for Apache Spark abfragen.
Lakehouse übernimmt die Metadatenübersetzung und den sicheren Datenzugriff, sodass Sie Remote-Apache Iceberg-Tabellen so behandeln können, als wären sie lokal in Ihrer Google Cloud Umgebung.
Abfrage aus BigQuery
Verwenden Sie Standard-BigQuery-SQL, um föderierte Apache Iceberg-Tabellen abzufragen. Der Tabellenpfad hat eine vierteilige Struktur:
project.federated_catalog.namespace.table. Caching, Bereitstellung von Anmeldedaten und CCI-Transit-Routing werden automatisch verarbeitet.
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;
Ersetzen Sie Folgendes:
PROJECT_ID: Projekt-ID in Google Cloud .FEDERATED_CATALOG_NAME: Der Name des föderierten Katalogs.NAMESPACE_NAME: der Namespace im Katalog.TABLE_NAME: der Name der Tabelle.REGION: die Google Cloud Region. Beispiel:us-east4
Sie können die Abfrage auch mit dem bq-Befehlszeilentool ausführen:
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"
Abfrage aus Managed Service for Apache Spark
Senden Sie eine PySpark-Batcharbeitslast an Managed Service for Apache Spark mit aktivierter Anforderung von Anmeldedaten über X-Iceberg-Access-Delegation=vended-credentials. Spark verwendet die kurzlebigen, bereichsbezogenen Anmeldedaten, um eine sichere Verbindung zu S3 herzustellen. Sie müssen keine separaten AWS-Anmeldedaten oder S3-Connectors verwalten.
Ausgehende Verbindungen für Managed Service for Apache Spark aktivieren
Managed Service for Apache Spark kann mit der standardmäßigen Netzwerkkonfiguration keine Verbindung zu AWS S3 herstellen. Sie müssen einen Cloud Router und Cloud NAT bereitstellen.
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
Ersetzen Sie Folgendes:
NETWORK_NAME: Das Netzwerk für die Batcharbeitslast von Managed Service for Apache Spark (z. B.default).REGION: die Region für die Managed Service for Apache Spark-Batcharbeitslast.
Erstellen Sie eine PySpark-Anwendungsdatei und führen Sie den PySpark-Job aus.
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)
Laden Sie die Datei in Cloud Storage unter
PYSPARK_FILEhoch.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"
Ersetzen Sie Folgendes:
NAMESPACE_NAME: Der Namespace im föderierten Katalog.TABLE_NAME: der Name der Tabelle im föderierten Katalog.CATALOG_NAME: ein Name für den lokalen Spark-Katalog, z. B.my_catalog.PYSPARK_FILE: Dergs://Cloud Storage-Pfad zu Ihrer PySpark-Anwendungsdatei.REGION: die Region für die Managed Service for Apache Spark-Batcharbeitslast.RUNTIME_VERSION: die Laufzeitversion von Managed Service for Apache Spark, z. B.2.3.PROJECT_ID: Das Projekt, das für die Verwendung des Apache Iceberg-REST-Katalogendpunkts abgerechnet wird.FEDERATED_CATALOG_NAME: Der Name des föderierten Katalogs.IO_IMPL: die FileIO-Implementierung, die Ihrem zugrunde liegenden Speicher entspricht.
Spark-Konfigurationsparameter
In der folgenden Tabelle sind allgemeine Parameter aufgeführt, die für alle Verbindungen erforderlich sind:
Parameter Beschreibung spark.sql.defaultCatalogDer Standardkatalogname, z. B. CATALOG_NAME.spark.sql.catalog.CATALOG_NAMEDie Katalogimplementierungsklasse. Legen Sie org.apache.iceberg.spark.SparkCatalogfest.spark.sql.catalog.CATALOG_NAME.typeDer Backend-Typ des Katalogs. Auf restfür den Iceberg-REST-Katalog festgelegt.spark.sql.catalog.CATALOG_NAME.uriDer URI des REST-Katalogendpunkts. Legen Sie https://biglake.googleapis.com/iceberg/v1/restcatalogfest.spark.sql.catalog.CATALOG_NAME.warehouseDer Warehouse-Standortpfad für den föderierten Katalog. Legen Sie bl://projects/PROJECT_ID/catalogs/FEDERATED_CATALOG_NAMEfest.spark.sql.catalog.CATALOG_NAME.header.x-goog-user-projectDie Google Cloud-Projekt-ID, die für die Abrechnung und die Kontingentzuordnung verwendet wird. Legen Sie PROJECT_IDfest.spark.sql.extensionsDie Spark-Sitzungserweiterungen für die Iceberg-SQL-Syntax und -Funktionen. Legen Sie org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensionsfest.In der folgenden Tabelle sind die Authentifizierungsparameter aufgeführt:
Parameter Beschreibung spark.sql.catalog.CATALOG_NAME.rest.auth.typeDie benutzerdefinierte Authentifizierungsmanager-Klasse. Auf org.apache.iceberg.gcp.auth.GoogleAuthManagerfür die Authentifizierung mit dem OAuth-Ablauf festlegen.spark.sql.catalog.CATALOG_NAME.oauth2-server-uriDie URI des OAuth2-Token-Serverendpunkts. Auf https://oauth2.googleapis.com/tokenfür die Authentifizierung mit einem persönlichen Zugriffstoken (Personal Access Token, PAT) festgelegt.spark.sql.catalog.CATALOG_NAME.tokenDas Bearer-Token oder das persönliche Zugriffstoken (Personal Access Token, PAT). Wird in der Regel für die PAT-Authentifizierung auf $(gcloud auth application-default print-access-token)festgelegt.In der folgenden Tabelle sind eindeutige Parameter basierend auf Ihrem Cloud Storage-Anbieter (
IO_IMPL) aufgeführt:Speicher spark.sql.catalog.CATALOG_NAME.io-implHinweise Amazon S3 org.apache.iceberg.aws.s3.S3FileIOErfordert die Bereitstellung von Anmeldedaten ( X-Iceberg-Access-Delegation=vended-credentials), falls aktiviert.
Zusätzlicher Parameter:spark.sql.catalog.CATALOG_NAME.s3.region(eine Liste der Regionen finden Sie unter Amazon S3-Endpunkte und ‑Kontingente).Google Cloud Storage org.apache.iceberg.gcp.gcs.GCSFileIOZusätzlicher Parameter: spark.sql.catalog.CATALOG_NAME.gcs.oauth2.refresh-credentials-endpoint=https://oauth2.googleapis.com/token.Azure Blob Storage org.apache.iceberg.azure.adlsv2.ADLSFileIOEs sind keine zusätzlichen Speicherparameter erforderlich. Bei Snowflake können Probleme beim Abfragen von
STRING-Spalten auftreten, da sie automatisch für die Speicherung optimiert werden. Sie haben zwei Möglichkeiten, dieses Problem zu beheben:- Option 1: Vektorisierung in Spark deaktivieren: Fügen Sie dem Flag
--propertiesdie folgenden Spark-Konfigurationseigenschaften hinzu: spark.sql.iceberg.vectorization.enabled=falsespark.sql.catalog.CATALOG_NAME.table-override.read.parquet.vectorization.enabled=falseOption 2: Serialisierungsrichtlinie in Snowflake ändern: Ändern Sie die Speicher-Serialisierungsrichtlinie für die Tabelle in Snowflake in
COMPATIBLE.
Cache-Nutzung und Einsparungen bei den Ausgangskosten überwachen
Lakehouse-Caching ist für alle cloudübergreifenden Abfragen automatisch aktiviert. Wenn eine Abfrage ausgeführt wird, werden Datenblöcke automatisch lokal im Google Cloud -Speicher zwischengespeichert. Nachfolgende Abfragen, die auf dieselben Datenblöcke abzielen, werden direkt aus dem lokalen Cache gelesen, anstatt die Daten aus der Remote-Cloud abzurufen.
Wenn Sie die Cache-Trefferraten prüfen und Ihre Kosteneinsparungen bei ausgehendem Traffic messen möchten, sehen Sie sich die Jobdetails in der BigQuery-Konsole an oder rufen Sie die Statistiken für den Abfragejob (JobStatistics2) über die BigQuery API oder die bq-Befehlszeile ab:
bq show --format=prettyjson --j JOB_ID
In der JSON-Ausgabe unter statistics.query.objectStorageStats (oder object_storage_stats in der Proto-API) wird in den Jobstatistiken eine Liste mit einem Eintrag für jeden Cloud-Anbieter zurückgegeben, auf den während der Ausführung zugegriffen wurde. Jeder Eintrag enthält die folgenden Felder:
cloudProvider(cloud_provider): Der Remote-Cloudanbieter, der den Objektspeicher hostet (z. B.AWSoderAZURE).cacheBytesRead(cache_bytes_read): Die Gesamtzahl der Byte, die aus dem lokalen Google Cloud Cache gelesen wurden, wodurch ein Lesezugriff auf den Remote-Objektspeicher vermieden wird.objectStorageBytesRead(object_storage_bytes_read): Die Gesamtzahl der Bytes, die direkt aus dem Objektspeicher des Remote-Cloud-Anbieters gelesen wurden.
Weitere Informationen zu Caching-Konzepten und Überlegungen zum Datenstandort finden Sie unter Intelligentes Caching.