Lakehouse for Apache Iceberg bietet Interoperabilität mit BigQuery über ein Feature namens BigQuery-Katalogföderation. Mit diesem Feature können Sie von BigQuery verwaltete Tabellen, z. B. von Iceberg verwaltete Tabellen, für externe Open-Source-Engines wie Apache Spark und Trino verfügbar machen.
Anstatt einen dedizierten Lakehouse-Katalogcontainer zum Speichern von Metadaten zu erstellen, fungiert der Apache Iceberg REST-Katalogendpunkt nur als Proxy-Gateway. Wenn externe Engines eine Verbindung über das bq://-Warehouse-Präfix herstellen, leitet das Gateway ihre Kataloganfragen direkt an den internen Katalog von BigQuery weiter.
So können Sie Tabellen direkt in BigQuery mit Standard-BigQuery-DDL oder APIs erstellen und verwalten und gleichzeitig externen OSS-Engines schreibgeschützten Zugriff gewähren, um diese Tabellen über den REST-Katalogendpunkt abzufragen.
So funktioniert die BigQuery-Katalogföderation
Mit der BigQuery-Katalogföderation können Sie BigQuery-Tabellen wie verwaltete Iceberg-Tabellen und BigQuery Metastore-Tabellen über den Apache Iceberg-REST-Katalogendpunkt des Lakehouse-Laufzeitkatalogs verfügbar machen.
Der Ablauf der BigQuery-Katalogföderation funktioniert so:
- Tabelle im BigQuery-Katalog erstellen: Sie erstellen eine von Iceberg verwaltete Tabelle in BigQuery mit DDL-Anweisungen. Diese Tabelle ist im BigQuery-Katalog vorhanden, unterliegt BigQuery-Zugriffssteuerungslisten (Access Control Lists, ACLs) und fungiert als BigQuery-REST-Ressource.
- Föderation in das BigQuery-Data Warehouse über den Lakehouse-Laufzeitkatalog: Mit der Apache Iceberg REST API des Lakehouse-Laufzeitkatalogs können Sie eine Föderation in ein Data Warehouse durchführen, das durch das
bq://projects/PROJECT_ID-Format für den Data Warehouse-Pfad (oder die regionale Versionbq://projects/PROJECT_ID/locations/LOCATION) angegeben wird. So können Sie über die Lakehouse for Apache Iceberg API von Compute-Engines wie Apache Spark aus auf die BigQuery-Tabelle zugreifen. In dieser Konfiguration haben Sie in Spark nur Lesezugriff, in BigQuery jedoch Lese- und Schreibzugriff.
Vergleich mit Tabellen, die vom Apache Iceberg REST-Katalogendpunkt verwaltet werden
Die BigQuery-Katalogföderation unterscheidet sich in den folgenden Punkten von Workflows, in denen der Lakehouse-Laufzeitkatalog den Apache Iceberg-REST-Katalogendpunkt verwendet:
- Ressourcenverwaltung und Katalogspeicher: Föderierte Tabellen befinden sich als BigQuery-REST-Ressourcen im BigQuery-Katalog und der Lakehouse-Laufzeitkatalog fungiert als Proxy-Gateway. Wenn der Lakehouse-Laufzeitkatalog den Apache Iceberg REST-Katalogendpunkt verwendet, werden Tabellen direkt im Katalog als Lakehouse for Apache Iceberg-REST-Ressourcen gespeichert.
- Zugriffssteuerung: Für föderierte Tabellen werden BigQuery IAM-Berechtigungen und Zugriffssteuerungslisten (Access Control Lists, ACLs) verwendet. Wenn der Lakehouse-Laufzeitkatalog den Apache Iceberg REST-Katalogendpunkt verwendet, nutzen Tabellen Lakehouse-ACLs für Apache Iceberg.
- Lese- und Schreibfunktionen der Engine: Föderierte Tabellen bieten Lese- und Schreibzugriff über BigQuery, aber nur Lesezugriff über externe Engines wie Spark. Wenn der Lakehouse-Laufzeitkatalog den Apache Iceberg REST-Katalogendpunkt verwendet, unterstützen Tabellen Lese- und Schreibvorgänge sowohl über BigQuery-APIs als auch über externe Engines wie Spark.
Hinweis
-
Prüfen Sie, ob für Ihr Google Cloud Projekt die Abrechnung aktiviert ist.
-
Aktivieren Sie die BigLake API.
Rollen, die zum Aktivieren von APIs erforderlich sind
Zum Aktivieren von APIs benötigen Sie die IAM-Rolle „Service Usage-Administrator“ (
roles/serviceusage.serviceUsageAdmin), die die Berechtigungserviceusage.services.enableenthält. Weitere Informationen zum Zuweisen von Rollen
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zur Verwendung der Katalogföderation in BigQuery benötigen:
-
Katalogressourcen lesen und Tabellendaten abfragen:
- BigLake-Betrachter (
roles/biglake.viewer) für das Projekt - Storage Object Viewer (
roles/storage.objectViewer) für den Cloud Storage-Bucket
- BigLake-Betrachter (
-
Datenbearbeitungssprache (DML)-Vorgänge mit der BigQuery-Katalogföderation ausführen:
- BigQuery-Datenbearbeiter (
roles/bigquery.dataEditor) für das Projekt - Storage-Administrator (
roles/storage.admin) für den Cloud Storage-Bucket. Wenn Sie Abfrage-Engines wie Managed Service for Apache Spark verwenden, um DML-Vorgänge auszuführen, weisen Sie dem Dienstkonto, mit dem Sie Jobs in dieser Engine ausführen, diese Rollen zu.
- BigQuery-Datenbearbeiter (
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.
BigQuery-Katalogföderation einrichten
Wenn Sie die BigQuery-Katalogföderation aktivieren möchten, konfigurieren Sie Ihren Client (z. B. Apache Spark oder Trino) mit dem bq://projects/PROJECT_ID-Warehouse-Format im Feld WAREHOUSE_PATH in den Clientkonfigurationsbeispielen unter Clientanwendung konfigurieren.
Sie können auch einen BigQuery-Standort angeben, um zukünftige Anfragen mit dem Format bq://projects/PROJECT_ID/locations/LOCATION auf einen einzelnen Standort zu beschränken.
Da diese Ressourcen von BigQuery verwaltet werden, benötigen Sie die entsprechenden erforderlichen Berechtigungen.
Namespaces für föderierte Tabellen erstellen
Nachdem Sie Ihren Client für die BigQuery-Katalogföderation konfiguriert haben, können Sie einen Namespace für Ihre föderierten Tabellen erstellen.
Spark
Wenn Sie die BigQuery-Katalogföderation verwenden möchten, müssen Sie die Klauseln LOCATION und DBPROPERTIES einfügen:
spark.sql("CREATE NAMESPACE IF NOT EXISTS NAMESPACE_NAME LOCATION 'gs://BUCKET_NAME/NAMESPACE_NAME' WITH DBPROPERTIES ('gcp-region' = 'LOCATION');") spark.sql("USE NAMESPACE_NAME;")
Ersetzen Sie Folgendes:
NAMESPACE_NAME: Ein Name für Ihren Namespace.BUCKET_NAME: Der Cloud Storage-Bucket, den Sie mit Ihrem Katalog verwenden.LOCATION: Ein BigQuery-Standort. Der Standardwert ist der multiregionale StandortUS.
Trino
Wenn Sie die BigQuery-Katalogföderation verwenden möchten, müssen Sie die Attribute LOCATION und gcp-region angeben:
CREATE SCHEMA IF NOT EXISTS CATALOG_NAME.SCHEMA_NAME WITH ( LOCATION = 'gs://BUCKET_NAME/SCHEMA_NAME', "gcp-region" = 'LOCATION'); USE CATALOG_NAME.SCHEMA_NAME;
Ersetzen Sie Folgendes:
CATALOG_NAME: Der Name Ihres Trino-Katalogs, der den Apache Iceberg-REST-Katalogendpunkt verwendet.SCHEMA_NAME: Ein Name für Ihr Schema.BUCKET_NAME: Der Cloud Storage-Bucket, den Sie mit Ihrem Katalog verwenden.LOCATION: Ein BigQuery-Standort. Der Standardwert ist der multiregionale StandortUS.
Föderierte Tabellen in BigQuery abfragen
Tabellen, die Sie in einem föderierten Katalog erstellen, sind in BigQuery sichtbar und können direkt mit Standard-BigQuery-SQL abgefragt werden (ohne dass ein vierteiliger P.C.N.T-Name erforderlich ist):
SELECT * FROM `NAMESPACE_NAME.TABLE_NAME`;
Ersetzen Sie Folgendes:
NAMESPACE_NAME: Der Name Ihres Namespace.TABLE_NAME: der Name Ihrer Tabelle.
Nächste Schritte
- Informationen zum Verwalten von Katalogen in der Google Cloud Konsole
- Weitere Informationen zu den von Lakehouse-Laufzeitkatalog unterstützten Apache Iceberg-Tabellen