Remotedaten abfragen

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:

  1. Achten Sie darauf, dass Ihr Remote-Katalog Daten enthält.
  2. 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:

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.

  1. 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.
  2. 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_FILE hoch.

    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: der gs://-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.defaultCatalog Der Standardkatalogname (z. B. CATALOG_NAME).
    spark.sql.catalog.CATALOG_NAME Die Katalogimplementierungsklasse. Legen Sie org.apache.iceberg.spark.SparkCatalog fest.
    spark.sql.catalog.CATALOG_NAME.type Der Katalog-Backend-Typ. Legen Sie für den Iceberg-REST-Katalog rest fest.
    spark.sql.catalog.CATALOG_NAME.uri Der URI des REST-Katalogendpunkts. Legen Sie https://biglake.googleapis.com/iceberg/v1/restcatalog fest.
    spark.sql.catalog.CATALOG_NAME.warehouse Der Pfad zum Warehouse-Speicherort für den föderierten Katalog. Legen Sie bl://projects/PROJECT_ID/catalogs/FEDERATED_CATALOG_NAME fest.
    spark.sql.catalog.CATALOG_NAME.header.x-goog-user-project Die Google Cloud-Projekt-ID, die für die Abrechnung und Kontingentzuordnung verwendet wird. Legen Sie PROJECT_ID fest.
    spark.sql.extensions Die Spark-Sitzungserweiterungen für die Iceberg-SQL-Syntax und -Funktionen. Legen Sie org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions fest.

    In der folgenden Tabelle sind die Authentifizierungsparameter aufgeführt:

    Parameter Beschreibung
    spark.sql.catalog.CATALOG_NAME.rest.auth.type Die benutzerdefinierte Authentifizierungsmanagerklasse. Legen Sie org.apache.iceberg.gcp.auth.GoogleAuthManager für die OAuth-Ablaufauthentifizierung fest.
    spark.sql.catalog.CATALOG_NAME.oauth2-server-uri Die URI des OAuth2-Token-Server-Endpunkts. Legen Sie https://oauth2.googleapis.com/token für die Authentifizierung mit einem persönlichen Zugriffstoken (PAT) fest.
    spark.sql.catalog.CATALOG_NAME.token Das 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-impl Hinweise
    Amazon S3 org.apache.iceberg.aws.s3.S3FileIO Erfordert 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.GCSFileIO Zusä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.ADLSFileIO Es 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 --properties die folgenden Spark-Konfigurationsattribute hinzu:
    • spark.sql.iceberg.vectorization.enabled=false
    • spark.sql.catalog.CATALOG_NAME.table-override.read.parquet.vectorization.enabled=false

    • Option 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. AWS oder AZURE).
  • 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.

Nächste Schritte