Lakehouse for Apache Iceberg bietet Interoperabilität mit BigQuery über ein Feature namens BigQuery-Katalogföderation. Mit diesem Feature können Sie Tabellen, die von BigQuery verwaltet werden, z. B. von Iceberg verwaltete Tabellen, für externe Open-Source-Engines (OSS) 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 lediglich als Proxy-Gateway. Wenn externe Engines eine Verbindung mit dem Warehouse-Präfix bq:// 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 auf diese Tabellen über den REST-Katalogendpunkt gewähren.
Funktionsweise der BigQuery-Katalogföderation
Mit der BigQuery-Katalogföderation können Sie BigQuery-Tabellen wie von Iceberg verwaltete Tabellen und BigQuery-Metastore-Tabellen über den Apache Iceberg-REST-Katalogendpunkt des Lakehouse-Laufzeitkatalogs verfügbar machen.
Der Ablauf der BigQuery-Katalogföderation sieht so aus:
- 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 den BigQuery-Zugriffssteuerungslisten (Access Control Lists, ACLs) und fungiert als BigQuery-REST-Ressource.
- Aus dem
Lakehouse-Laufzeitkatalog in das BigQuery-Warehouse föderieren: Mit der
Apache Iceberg-REST-API des Lakehouse-Laufzeitkatalogs können Sie
in ein Warehouse föderieren, das durch das
bq://projects/PROJECT_IDWarehouse-Pfadformat (oder die regionale Version,bq://projects/PROJECT_ID/locations/LOCATION) angegeben wird. So können Sie über die Lakehouse for Apache Iceberg API von Compute-Engines wie Apache Spark auf die BigQuery-Tabelle zugreifen. In dieser Konfiguration haben Sie in Spark schreibgeschützten Zugriff, in BigQuery jedoch Lese- und Schreibzugriff.
Hinweise
Da bei der BigQuery-Katalogföderation keine dedizierte Lakehouse-Katalogressource erstellt wird, gelten andere Konzepte und Konfigurationen auf Katalogebene wie die Ressourcenhierarchie, Bucket- und Katalogregionen sowie die vierteilige Namensstruktur P.C.N.T nicht für diese Methode. In der zugrunde liegenden API entspricht dies der Konfiguration
CATALOG_TYPE_BIGQUERY. Die Delegierung des Speicherzugriffs (Anbieten von Anmeldedaten) wird für föderierte BigQuery-Kataloge nicht unterstützt.Die BigQuery-Katalogföderation unterscheidet sich von grenzenlosem Lakehouse. Bei der BigQuery-Katalogföderation werden Google Cloud-Tabellen für externe OSS-Engines verfügbar gemacht, während bei grenzenlosem Lakehouse Google Cloud mit externen Remote-Katalogen wie Databricks Unity Catalog verbunden wird, um Daten abzufragen, die bei anderen Cloud-Anbietern gespeichert sind. Dies erfolgt direkt aus BigQuery und OSS-Engines, ohne dass Daten migriert werden müssen. Weitere Informationen zu diesem Workflow finden Sie unter Informationen zu grenzenlosem Lakehouse.
Vergleich mit Tabellen, die vom Apache Iceberg-REST-Katalogendpunkt verwaltet werden
Die BigQuery-Katalogföderation unterscheidet sich in folgenden Punkten von Workflows, bei denen der Lakehouse-Laufzeitkatalog den Apache Iceberg-REST-Katalogendpunkt verwendet:
- Ressourcenverwaltung und Katalogspeicher: Föderierte Tabellen befinden sich im BigQuery-Katalog als BigQuery-REST-Ressourcen 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, werden für Tabellen Lakehouse for Apache Iceberg-ACLs verwendet.
- Lese- und Schreibfunktionen der Engine: Föderierte Tabellen bieten Lese- und Schreibzugriff über BigQuery, aber schreibgeschützten Zugriff von externen Engines wie Spark. Wenn der Lakehouse-Laufzeitkatalog den Apache Iceberg-REST-Katalogendpunkt verwendet, unterstützen Tabellen Lese- und Schreibvorgänge sowohl von BigQuery-APIs als auch von externen Engines wie Spark.
Hinweis
-
Prüfen Sie, ob die Abrechnung für Ihr Google Cloud Projekt aktiviert ist.
-
Aktivieren Sie die BigLake API.
Rollen, die zum Aktivieren von APIs erforderlich sind
Zum Aktivieren von APIs benötigen Sie die Berechtigung
serviceusage.services.enable. Wenn Sie das Projekt erstellt haben, haben Sie diese Berechtigung wahrscheinlich bereits über die Rolle „Inhaber“ (roles/owner). Andernfalls können Sie diese Berechtigung über die Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin) erhalten. Informationen zum Zuweisen von Rollen.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie für die Verwendung der Katalogföderation in BigQuery benötigen:
-
Katalogressourcen lesen und Tabellendaten abfragen:
- BigLake Viewer (
roles/biglake.viewer) für das Projekt - Storage Object Viewer (
roles/storage.objectViewer) für den Cloud Storage-Bucket
- BigLake Viewer (
-
Datenbearbeitungssprachenvorgänge (Data Manipulation Language, DML) mit der BigQuery-Katalogföderation ausführen:
- BigQuery Data Editor (
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 diese Rollen dem Dienstkonto zu, mit dem Sie Jobs in dieser Engine ausführen.
- BigQuery Data Editor (
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 in
dem WAREHOUSE_PATH Feld in den Clientkonfigurationsbeispielen unter
Clientanwendung konfigurieren.
Sie können auch einen BigQuery-Standort angeben, um
zukünftige Anfragen auf einen einzelnen Standort zu beschränken. Verwenden Sie dazu das
bq://projects/PROJECT_ID/locations/LOCATION
Format.
Da diese Ressourcen von BigQuery verwaltet werden, müssen Sie die entsprechenden erforderlichen Berechtigungen haben.
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, fügen Sie die Klauseln LOCATION und DBPROPERTIES ein:
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 die MultiregionUS.
Trino
Wenn Sie die BigQuery-Katalogföderation verwenden möchten, fügen Sie die Attribute LOCATION und gcp-region ein:
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 mit dem Apache Iceberg-REST-Katalogendpunkt.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 die MultiregionUS.
Föderierte Tabellen in BigQuery abfragen
Tabellen, die Sie unter 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 derKonsole Google Cloud .
- Informationen zu Apache Iceberg-Tabellen, die vom Lakehouse-Laufzeitkatalog unterstützt werden.