Lakehouse 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 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 gewähren, um diese Tabellen über den REST-Katalogendpunkt abzufragen.
Funktionsweise der BigQuery-Katalogföderation
Mit der BigQuery-Katalogföderation können Sie BigQuery-Tabellen wie 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 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-Zugriffskontrolllisten (Access Control Lists, ACLs) und fungiert als BigQuery-REST-Ressource.
- Verknüpfung mit dem BigQuery-Data Warehouse über den Lakehouse-Laufzeitkatalog: Mit der Apache Iceberg REST API des Lakehouse-Laufzeitkatalogs können Sie eine Verknüpfung mit einem Data Warehouse herstellen, 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 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.
Hinweise
Da bei der BigQuery-Katalogföderation keine dedizierte Lakehouse Catalog-Ressource erstellt wird, gelten andere Konzepte und Konfigurationen auf Katalogebene, z. B. die Ressourcenhierarchie, Bucket- und Katalogregionen sowie die vierteilige P.C.N.T-Namensstruktur, nicht für diese Methode. In der zugrunde liegenden API entspricht dies der
CATALOG_TYPE_BIGQUERY-Konfiguration. Die Delegierung des Speicherzugriffs (Bereitstellung von Anmeldedaten) wird für föderierte BigQuery-Kataloge nicht unterstützt.Die BigQuery-Katalogföderation unterscheidet sich von der Cloud-übergreifenden Datenzugriffsfunktion des grenzenlosen Lakehouse. Während die BigQuery-Katalogföderation Google Cloud-Tabellen für externe OSS-Engines verfügbar macht, verbindet Lakehouse Google Cloud mit externen Remote-Katalogen wie dem Databricks Unity Catalog, um Daten abzufragen, die bei anderen Cloud-Anbietern gespeichert sind. Dies erfolgt direkt über BigQuery und OSS-Engines, ohne dass Daten migriert werden müssen. Weitere Informationen zu diesem Workflow finden Sie unter Cloudübergreifender Datenzugriff.
Vergleich mit Tabellen, die vom Apache Iceberg REST-Katalogendpunkt verwaltet werden
Die BigQuery-Katalogföderation unterscheidet sich in folgenden Punkten von Workflows, in 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-REST-Ressourcen gespeichert.
- Zugriffssteuerung: Für föderierte Tabellen werden BigQuery-IAM-Berechtigungen und Zugriffssteuerungslisten (Access Control Lists, ACLs) verwendet. Wenn im Lakehouse-Laufzeitkatalog der Apache Iceberg REST-Katalogendpunkt verwendet wird, werden für Tabellen Lakehouse-ACLs verwendet.
- 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 die Abrechnung für Ihr Google Cloud Projekt aktiviert ist.
-
Aktivieren Sie die BigLake API, falls sie noch nicht aktiviert ist.
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 zur Verwendung der Katalogföderation in BigQuery benötigen:
-
Katalogressourcen lesen und Tabellendaten abfragen:
- BigLake-Betrachter (
roles/biglake.viewer) für das Projekt - Storage-Objekt-Betrachter (
roles/storage.objectViewer) für den Cloud Storage-Bucket
- BigLake-Betrachter (
-
DML-Vorgänge (Data Manipulation Language) 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 dem Dienstkonto, mit dem Sie Jobs in dieser Engine ausführen, diese Rollen zu.
- 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 Warehouse-Format bq://projects/PROJECT_ID im Feld WAREHOUSE_PATH 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 Format bq://projects/PROJECT_ID/locations/LOCATION.
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 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 multiregionale RegionUS.
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 Apache Iceberg-Tabellen, die vom Lakehouse-Laufzeitkatalog unterstützt werden