Remotedaten abfragen

Nachdem Sie den cloudübergreifenden Datenzugriff eingerichtet haben, können Sie Remote-Daten aus mehreren Quellen abfragen. Mit dieser Funktion von Borderless 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 analytischen Abfragen können Sie Ihre föderierten Daten auch für KI-gestützte Statistiken und Governance verwenden:

  • Conversational Analytics: Erstellen Sie spezialisierte Agenten, die auf Ihren genauen Datenquellen basieren, einschließlich föderierter Tabellen, um Daten aus verschiedenen Clouds in einer einzigen Unterhaltung zu analysieren.
  • Dataplex Catalog: Verwenden Sie Knowledge Catalog-Funktionen für die Datenprofilerstellung und Statistiken mit föderierten Datenquellen.

Für detailliertere Statistiken können Sie spezialisierte Agenten erstellen, die auf Ihren Datenquellen basieren, von Projekten, Datasets und Tabellen bis hin zu Ansichten, Diagrammen und benutzerdefinierten Funktionen. Da sich Ihre Daten selten an einem Ort befinden, geht die Conversational Analytics über BigQuery-Standardtabellen hinaus und umfasst Apache Iceberg-Tabellen, die von Lakehouse verwaltet werden, und Lakehouse-Quellen wie Databricks Unity, AWS Glue, SAP und Salesforce. So können Sie Datensilos aufbrechen und Daten aus verschiedenen Clouds in einer einzigen Unterhaltung analysieren.

Auf dieser Seite erfahren Sie, 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:

  1. Prüfen Sie, ob sich Daten in Ihrem Remote-Katalog befinden.
  2. Richten Sie eine cloudübergreifende Verbindung für AWS Glue, Databricks Unity Catalog, Snowflake Horizon Catalog, oder SAP Business Data 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 Daten zugriff, sodass Sie Remote-Apache Iceberg-Tabellen so behandeln können, als wären sie lokal für Ihre 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: Ihre Google Cloud Projekt-ID.
  • 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, wobei die Bereitstellung von Anmeldedaten mit X-Iceberg-Access-Delegation=vended-credentials aktiviert ist. Spark verwendet die kurzlebigen, eingeschränkten 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 Standard 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 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 unter PYSPARK_FILE in Cloud Storage 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 von Managed Service for Apache Spark, z. B. 2.3.
    • PROJECT_ID: das Projekt, das für die Verwendung 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 allgemeine 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 Typ des Katalog-Backends. 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 Kontingentzuweisung 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 Authentifizierungsmanager-Klasse. Legen Sie für die Authentifizierung mit OAuth-Ablauf org.apache.iceberg.gcp.auth.GoogleAuthManager fest.
    spark.sql.catalog.CATALOG_NAME.oauth2-server-uri Der URI des OAuth2-Tokenserver-Endpunkts. Legen Sie für die Authentifizierung mit persönlichem Zugriffstoken https://oauth2.googleapis.com/token fest.
    spark.sql.catalog.CATALOG_NAME.token Das Bearer-Token oder das persönliche Zugriffstoken. Wird in der Regel für die Authentifizierung mit persönlichem Zugriffstoken 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-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).
    Google 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 auftreten, wenn Sie STRING-Spalten abfragen, 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