Cloudübergreifendes Lakehouse verwenden

Lakehouse for Apache Iceberg unterstützt die Abfrage von Remote-Daten über eine cloudübergreifende Lakehouse-Konfiguration. Nach der Konfiguration unterstützt das System den Datenzugriff mit Standard-SQL in BigQuery, der Open-Source-Version von Apache Spark oder dem Managed Service for Apache Spark. 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 cloudübergreifender Tabellen, um Daten aus verschiedenen Clouds über eine zentrale 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 cloudübergreifende 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 ein cloudübergreifendes Lakehouse eingerichtet haben.

Hinweis

Bevor Sie Ihre Daten abfragen können, müssen Sie Folgendes tun:

  1. Richten Sie ein cloudübergreifendes Lakehouse für AWS Glue, Databricks Unity Catalog oder Snowflake ein.
  2. Prüfen Sie, ob Ihr Remote-Katalog Daten enthält.

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:

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 mit 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.

  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 Batcharbeitslast von Managed Service for Apache Spark (z. B. default).
    • REGION: die Region für die Managed Service for Apache Spark-Batcharbeitslast.
  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 die 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.catalog.CATALOG_NAME.rest-metrics-reporting-enabled=false,\
        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 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.defaultCatalog Der Standardname des Katalogs.
    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.extensions org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions

    In der folgenden Tabelle sind eindeutige Parameter basierend auf Ihrem Cloud Storage-Anbieter (<var>IO_IMPL</var>) aufgeführt:

    Speicher spark.sql.catalog.CATALOG_NAME.io-impl Hinweise
    Amazon S3 org.apache.iceberg.aws.s3.S3FileIO Erfordert X-Iceberg-Access-Delegation=vended-credentials, wenn aktiviert.
    Google Cloud Storage org.apache.iceberg.gcp.gcs.GCSFileIO
    Azure Blob Storage org.apache.iceberg.azure.adlsv2.ADLSFileIO

    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 --properties die folgenden Spark-Konfigurationseigenschaften 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 Speicher-Serialisierungsrichtlinie für die Tabelle in Snowflake in COMPATIBLE.

Nächste Schritte