Lakehouse for Apache Iceberg unterstützt das Abfragen von Remote-Daten über eine cloudübergreifende Lakehouse-Konfiguration. Nach der Konfiguration unterstützt das System den Datenzugriff über Standard-SQL in BigQuery oder Apache Spark im Managed Service for Apache Spark.
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:
- Richten Sie Cross-Cloud Lakehouse für AWS Glue oder Databricks Unity Catalog ein.
- 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:
- 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 zum Abfragen von föderierten Apache Iceberg-Tabellen Standard-BigQuery-SQL. Der Tabellenpfad folgt einer vierteiligen Struktur: project.federated_catalog.namespace.table. Das Caching, die Bereitstellung von Anmeldedaten und das 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
Sie können Cloud-übergreifende Lakehouse-Daten direkt aus Managed Service for Apache Spark-Clustern lesen, ohne separate AWS-Anmeldedaten oder S3-Connectors zu verwalten. Spark stellt über die standardmäßige Apache Iceberg-REST-Katalogoberfläche eine direkte Verbindung zu Lakehouse her, anstatt die BigQuery Storage Read API zu verwenden.
Wenn Sie Ihren Managed Service for Apache Spark-Job mit dem Lakehouse-REST-Endpunkt konfigurieren, stellt Lakehouse Spark automatisch temporäre, bereichsbezogene S3-Anmeldedaten über die X-Iceberg-Access-Delegation=vended-credentials bereit. So kann Spark die zugrunde liegenden Daten sicher lesen und gleichzeitig die Konfiguration Ihres Katalogs einhalten.
So konfigurieren Sie Ihren Managed Service for Apache Spark-Job mit dem Lakehouse-REST-Endpunkt:
Konfigurieren Sie den Spark-Job.
Übergeben Sie in diesem Befehl die Apache Iceberg REST-Katalogeigenschaften, wenn Sie Ihren Spark-Job senden. Dadurch wird Ihr föderierter Lakehouse-Katalog einem lokalen Spark-Katalognamen zugeordnet (z. B.
my_catalog):gcloud dataproc jobs submit pyspark PYSPARK_SCRIPT_PATH \ --cluster="CLUSTER_NAME" \ --region="REGION" \ --properties="spark.sql.catalog.SPARK_CATALOG_NAME=org.apache.iceberg.spark.SparkCatalog,\ spark.sql.catalog.SPARK_CATALOG_NAME.type=rest,\ spark.sql.catalog.SPARK_CATALOG_NAME.uri=https://biglake.googleapis.com/iceberg/v1/restcatalog,\ spark.sql.catalog.SPARK_CATALOG_NAME.warehouse=bl://projects/PROJECT_ID/catalogs/FEDERATED_CATALOG_NAME,\ spark.sql.catalog.SPARK_CATALOG_NAME.io-impl=org.apache.iceberg.aws.s3.S3FileIO,\ spark.sql.catalog.SPARK_CATALOG_NAME.header.X-Iceberg-Access-Delegation=vended-credentials,\ spark.sql.catalog.SPARK_CATALOG_NAME.rest-metrics-reporting-enabled=false,\ spark.sql.catalog.SPARK_CATALOG_NAME.header.x-goog-user-project=PROJECT_ID"
Daten in PySpark abfragen
Mit diesem Befehl wird Spark verwendet, um direkt aus dem Lakehouse-Katalog zu lesen. Anschließend wird eine Standardtransformation ausgeführt.
df = spark.table("SPARK_CATALOG_NAME.NAMESPACE_NAME.TABLE_NAME") df.filter(df.action == "purchase").show()
Ersetzen Sie Folgendes:
PYSPARK_SCRIPT_PATH: der Pfad zu Ihrem PySpark-Job.CLUSTER_NAME: Der Name Ihres Managed Service for Apache Spark-Clusters.REGION: die Google Cloud Region. Beispiel:us-east4PROJECT_ID: Projekt-ID in Google Cloud .SPARK_CATALOG_NAME: Der Name, den Sie für den Spark-Katalog verwenden möchten.FEDERATED_CATALOG_NAME: Der Name des föderierten Katalogs.NAMESPACE_NAME: der Namespace im Katalog.TABLE_NAME: der Name der Tabelle.