In einem grenzenlosen Lakehouse können Sie über eine cloudübergreifende Verbindung auf Remote-Daten von externen Plattformen zugreifen, ohne Dateien zwischen Cloud-Umgebungen verschieben zu müssen. Anschließend können Sie Ihre föderierten Tabellen über BigQuery, Managed Service for Apache Spark oder Open-Source-Apache Spark abfragen.
Zusätzlich zu analytischen Abfragen können Sie Ihre föderierten Daten für KI-gestützte Insights und Governance verwenden:
- Konversationelle Analyse: Erstellen Sie spezialisierte Agenten, die auf Ihren Datenquellen basieren, einschließlich föderierter Tabellen, um Daten aus verschiedenen Clouds in einer einzigen Unterhaltung zu analysieren.
- Knowledge Catalog: Daten profilieren und Statistiken aus Ihren föderierten Datenquellen generieren.
Für eine tiefergehende Analyse können Sie konversationelle Analyse-Agents erstellen, die Projekte, Datasets, Tabellen, Ansichten, Diagramme und benutzerdefinierte Funktionen verwenden. Diese Agenten funktionieren mit BigQuery-Standardtabellen, von Lakehouse verwalteten Apache Iceberg-Tabellen und Lakehouse-Quellen wie Databricks Unity Catalog, AWS Glue, SAP BDC und Salesforce.
Hinweis
Bevor Sie Ihre Daten abfragen können, müssen Sie die folgenden Schritte ausführen:
- Achten Sie darauf, dass 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 Geschäftsdaten-Cloud ein.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Abfragen föderierter Daten benötigen:
-
Daten in BigQuery abfragen:
BigQuery-Datenbetrachter (
roles/bigquery.dataViewer) -
BigQuery-Jobs ausführen:
BigQuery-Jobnutzer (
roles/bigquery.jobUser) -
Tabellenmetadaten in Lakehouse-Katalogen erkennen 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 Remote-Daten mit Standard-SQL in BigQuery oder Apache Spark in 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 vorhanden.
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. Die Bereitstellung von Anmeldedaten, das CCI-Transit-Routing und das cloudübergreifende Caching (wenn im Katalog aktiviert) werden automatisch von Google Cloudübernommen.
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 Region Google Cloud . 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 Anmeldedaten-Ausgabe und X-Iceberg-Access-Delegation=vended-credentials. Spark verwendet die kurzlebigen, bereichsbezogenen, bereitgestellten Anmeldedaten, um eine sichere Verbindung zu S3 herzustellen, ohne dass separate AWS-Anmeldedaten oder S3-Connectors verwaltet werden müssen.
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 Batch-Arbeitslast des Managed Service for Apache Spark (z. B.default).REGION: die Region für die Batcharbeitslast von Managed Service for Apache Spark.
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 diese 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 Batcharbeitslast von Managed Service for Apache Spark.RUNTIME_VERSION: die Laufzeitversion des Managed Service for Apache Spark, z. B.2.3.PROJECT_ID: Das Projekt, dem die Nutzung des Apache Iceberg REST-Katalogendpunkts in Rechnung gestellt 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 gängige 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 Katalog-Backend-Typ. Legen Sie für den Iceberg-REST-Katalog restfest.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 Pfad zum Warehouse-Speicherort 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 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 Authentifizierungsmanagerklasse. Legen Sie org.apache.iceberg.gcp.auth.GoogleAuthManagerfür die OAuth-Ablaufauthentifizierung fest.spark.sql.catalog.CATALOG_NAME.oauth2-server-uriDie URI des OAuth2-Token-Server-Endpunkts. Legen Sie https://oauth2.googleapis.com/tokenfür die Authentifizierung mit einem persönlichen Zugriffstoken (PAT) fest.spark.sql.catalog.CATALOG_NAME.tokenDas Inhabertoken oder das persönliche Zugriffstoken (PAT). Wird für die PAT-Authentifizierung normalerweise auf $(gcloud auth application-default print-access-token)festgelegt.In der folgenden Tabelle sind die eindeutigen Parameter für Ihren Speicheranbieter (
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).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 speicheroptimiert sind. Dazu haben Sie zwei Möglichkeiten:- Option 1: Vektorisierung in Spark deaktivieren: Fügen Sie dem Flag
--propertiesdie folgenden Spark-Konfigurationsattribute 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 Serialisierungsrichtlinie für den Speicher in Snowflake für die Tabelle in
COMPATIBLE.
Cache-Nutzung und Kosteneinsparungen beim ausgehenden Traffic überwachen
Wenn Sie cloudübergreifendes Caching für einen föderierten Katalog oder eine BigQuery-Verbindung aktivieren, speichert Lakehouse abgerufene Dateiblöcke lokal in der Google Cloud -Abfrageausführungsregion im Cache. Nachfolgende Abfragen, einschließlich anderer Abfragen, die auf dieselben Dateiblöcke abzielen, lesen direkt aus dem lokalen Cache, anstatt die Dateien noch einmal aus der Remote-Cloud abzurufen.
Wenn Sie die Cache-Trefferraten prüfen und die Einsparungen bei den Kosten für ausgehenden Traffic messen möchten, sehen Sie sich die Jobdetails in der BigQuery-Konsole an oder rufen Sie die JobStatistics2-Abfragejobstatistiken über die BigQuery API oder das bq-Befehlszeilentool ab:
bq show --format=prettyjson --job=true JOB_ID
Ersetzen Sie JOB_ID durch die ID Ihres BigQuery-Abfragejobs.
In der JSON-Ausgabe unter statistics.query.objectStorageStats (oder object_storage_stats in der Proto API) geben die Jobstatistiken eine Liste mit einem Eintrag für jeden Cloud-Anbieter zurück, auf den während der Ausführung zugegriffen wurde. Jeder Eintrag enthält die folgenden Felder:
cloudProvider(cloud_provider): Der Cloud-Anbieter, 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 Lesevorgang im Remote-Objektspeicher vermieden wurde.objectStorageBytesRead(object_storage_bytes_read): Die Gesamtzahl der Byte, die direkt aus dem Objektspeicher des Cloud-Anbieters gelesen wurden.
Weitere Informationen zu Caching-Konzepten und Überlegungen zum Datenstandort finden Sie unter Intelligentes Caching.