Der Apache Iceberg REST-Katalog in BigLake Metastore ist die empfohlene Methode, um BigLake Metastore für neue Arbeitsabläufe zu verwenden. Es sorgt für Interoperabilität zwischen Ihren Abfragemodulen, indem es eine einzige Quelle der Wahrheit für alle Ihre Iceberg-Daten bietet. Damit können Abfrage-Engines wie Apache Spark Iceberg-Tabellen auf konsistente Weise erkennen, Metadaten daraus lesen und sie verwalten.
Dieser Ansatz ist eine gute Wahl, wenn Sie Open-Source-Engines für den Zugriff auf Daten in Cloud Storage verwenden und Interoperabilität mit anderen Engines, einschließlich BigQuery, benötigen. Es unterstützt Funktionen wie Credential Vending für eine detaillierte Zugriffssteuerung sowie regionenübergreifende Replikation und Notfallwiederherstellung.
Der benutzerdefinierte Iceberg-Katalog für BigQuery ist dagegen eine frühere Integration. Vorhandene Workflows können weiterhin darauf zugreifen, aber der REST-Katalog bietet eine standardisierte und funktionsreiche Umgebung.
Hinweise
Machen Sie sich mit dem BigLake Metastore vertraut, bevor Sie fortfahren.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the BigLake API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zur Verwendung des Iceberg-REST-Katalogs im BigLake-Metastore benötigen:
-
Administrativen Aufgaben ausführen, z. B. den Nutzerzugriff auf den Katalog, den Speicherzugriff und den Modus für die Bereitstellung von Anmeldedaten des Katalogs verwalten:
-
BigLake-Administrator (
roles/biglake.admin) für das Projekt -
Storage-Administrator (
roles/storage.admin) für den Cloud Storage-Bucket
-
BigLake-Administrator (
-
Tabellendaten im Credential Vending-Modus lesen:
BigLake-Betrachter (
roles/biglake.viewer) für das Projekt -
Tabellendaten im Credential Vending-Modus schreiben:
BigLake-Editor (
roles/biglake.editor) für das Projekt -
Katalogressourcen und Tabellendaten im Modus ohne Bereitstellung von Anmeldedaten lesen:
-
BigLake-Betrachter (
roles/biglake.viewer) für das Projekt -
Storage Object Viewer (
roles/storage.objectViewer) für den Cloud Storage-Bucket
-
BigLake-Betrachter (
-
Katalogressourcen verwalten und Tabellendaten im Modus ohne Bereitstellung von Anmeldedaten schreiben:
-
BigLake Editor (
roles/biglake.editor) für das Projekt -
Storage-Objekt-Nutzer (
roles/storage.objectUser) für den Cloud Storage-Bucket
-
BigLake 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.
Beschränkungen
Für den Iceberg REST-Katalog gelten die folgenden Einschränkungen:
- Wenn Sie den Modus für die Bereitstellung von Anmeldedaten verwenden, müssen Sie die Property
io-implauforg.apache.iceberg.gcp.gcs.GCSFileIOfestlegen. Der Standardwertorg.apache.iceberg.hadoop.HadoopFileIOwird nicht unterstützt. - Trino wird nur mit der BigQuery-Katalogföderation unterstützt, wenn Sie Dataproc auf Compute Engine-Image-Versionen 2.3.16 und höher verwenden.
Katalogressourcen
Der Apache Iceberg REST-Katalog in BigLake Metastore verwendet eine Hierarchie von Ressourcen, um Ihre Daten zu organisieren.
Apache Iceberg REST-Katalogressourcen
Die folgende Tabelle bietet einen allgemeinen Überblick über die Ressourcen, die vom Apache Iceberg REST-Katalog im BigLake Metastore verwendet werden.
| Ressource | Beschreibung |
|---|---|
| Katalog | Mit dem Container der obersten Ebene, einem Katalog, können Sie Namespaces und Tabellen in logischen Gruppen organisieren, indem Sie sie in verschiedene Kataloge aufteilen. |
| Namespace | Eine logische Gruppierung, die zum Organisieren von Tabellen in einem Katalog verwendet wird. Sie funktioniert wie Datenbanken, Schemas oder Verzeichnisse. |
| Tabelle | Tabellen enthalten Definitionen von Zeilen und Spalten, die abgefragt werden können. |
Unterstützte Kataloge
Wenn Sie Ihren Client konfigurieren, geben Sie einen Warehouse-Standort an. Diese Auswahl bestimmt, wie Ihr Katalog funktioniert und in andere Google Cloud-Dienste eingebunden wird.
| Katalogtyp | Beschreibung |
|---|---|
| Cloud Storage-Bucket | Alle Daten in einem Katalog werden in einem einzelnen Cloud Storage-Bucket gespeichert. Wenn Daten in mehreren Buckets freigegeben werden, sind mehrere Kataloge erforderlich. |
| BigQuery-Föderation | Ermöglicht die Verwendung des Iceberg-REST-Katalogs zum Verwalten und Abfragen von Tabellen, die für BigQuery sichtbar sind. Weitere Informationen finden Sie unter Katalogföderation mit BigQuery verwenden. |
Details zum Katalog-Warehouse
Empfohlen
Cloud Storage-Bucket-Warehouse (
gs://): Bei diesem Standardansatz werden Iceberg-Metadaten und ‑Datendateien direkt vom Katalog in einem von Ihnen angegebenen Cloud Storage-Bucket verwaltet. Mit dieser Option haben Sie die direkte Kontrolle über Ihr Datenlayout und unterstützen Credential Vending für eine detaillierte Zugriffssteuerung. So können Sie BigLake-Tabellen für Apache Iceberg erstellen und verwalten.Wenn Sie beispielsweise einen Bucket zum Speichern Ihres Katalogs erstellt und ihn
iceberg-bucketgenannt haben, lauten sowohl der Katalogname als auch der Bucket-Nameiceberg-bucket. Das wird später verwendet, wenn Sie Ihren Katalog in BigQuery mit der P.C.N.T.-Syntax abfragen. Beispiel:my-project.biglake-catalog-id.quickstart_namespace.quickstart_table.
Legacy
- BigQuery-Föderation (
bq://): Mit diesem Ansatz können Sie den Iceberg REST-Katalog verwenden, um Tabellen zu verwalten und abzufragen, die für BigQuery sichtbar sind, ohne eine Katalogressource erstellen zu müssen. Weitere Informationen finden Sie unter Katalogföderation mit BigQuery verwenden.
Namensstruktur für P.C.N.T.
Wenn Sie BigLake Metastore-Tabellen in BigQuery abfragen, verwenden Sie eine vierteilige Namensstruktur, die oft als P.C.N.T bezeichnet wird:
- Project: Die Google Cloud Projekt-ID des Projekts, zu dem der Katalog gehört.
- Catalog: Der Name des BigLake Metastore-Katalogs.
- Namespace: Der Iceberg-Namespace (entspricht einem BigQuery-Dataset).
- Tabelle: Der Name der Tabelle.
Beispiel: my-project.biglake-catalog-id.my-namespace.my-table.
Iceberg REST-Katalog einrichten
Im Folgenden finden Sie die allgemeinen Schritte, die Sie ausführen müssen, wenn Sie den Apache Iceberg REST-Katalog in BigLake Metastore verwenden:
- Sie müssen den Speicherort für Ihr Katalog-Data Warehouse auswählen, entweder Cloud Storage oder BigQuery.
- Wenn Sie ein
gs://-Data Warehouse in Cloud Storage verwenden, erstellen Sie einen Katalog, der auf den Speicherort Ihres Data Warehouse verweist. - Konfigurieren Sie Ihre Clientanwendung für die Verwendung des Iceberg-REST-Katalogs.
- Erstellen Sie einen Namespace oder ein Schema, um Ihre Tabellen zu organisieren.
- Tabellen mit dem konfigurierten Client erstellen und abfragen
Katalog erstellen
Sie können einen Katalog erstellen, der entweder Anmeldedaten von Endnutzern oder den Modus für die Bereitstellung von Anmeldedaten verwendet.
Mit Endnutzeranmeldedaten übergibt der Katalog die Identität des Endnutzers, der darauf zugreift, zur Autorisierungsprüfung an Cloud Storage.
Die Bereitstellung von Anmeldedaten ist ein Mechanismus zur Delegierung des Speicherzugriffs, mit dem BigLake Metastore-Administratoren Berechtigungen direkt für BigLake Metastore-Ressourcen steuern können. Dadurch ist kein direkter Zugriff von Katalogusern auf Cloud Storage-Buckets mehr erforderlich. Damit können BigLake-Administratoren Nutzern Berechtigungen für bestimmte Datendateien erteilen.
Anmeldedaten für Endnutzer
Console
Öffnen Sie in der Google Cloud Console die Seite BigLake.
Klicken Sie auf Katalog erstellen.
Geben Sie im Feld Cloud Storage-Bucket auswählen den Namen des Cloud Storage-Buckets ein, der für Ihren Katalog verwendet werden soll. Alternativ können Sie auf Durchsuchen klicken, um einen vorhandenen Bucket auszuwählen oder einen neuen zu erstellen. Sie können nur einen Katalog pro Cloud Storage-Bucket haben.
Wählen Sie unter Authentication method (Authentifizierungsmethode) die Option End-user credentials (Anmeldedaten von Endnutzern) aus.
Klicken Sie auf Erstellen.
gcloud
Führen Sie den Befehl gcloud beta biglake iceberg catalogs create aus.
gcloud beta biglake iceberg catalogs create \ CATALOG_NAME \ --project PROJECT_ID \ --catalog-type gcs-bucket \ --credential-mode end-user
Ersetzen Sie Folgendes:
CATALOG_NAME: ein Name für Ihren Katalog. Bei verwalteten BigLake-Tabellen für Apache Iceberg stimmt dieser Name häufig mit der Cloud Storage-Bucket-ID überein, die mit dem REST-Katalog verwendet wird. Wenn Ihr Bucket beispielsweisegs://bucket-idist, kann der Katalognamebucket-idlauten. Dieser Name wird auch als Katalog-ID verwendet, wenn diese Tabellen in BigQuery abgefragt werden.PROJECT_ID: Projekt-ID in Google Cloud .
Modus für Bereitstellung von Anmeldedaten
Ein Katalogadministrator aktiviert die Bereitstellung von Anmeldedaten beim Erstellen oder Aktualisieren eines Katalogs. Als Katalognutzer können Sie dann den Iceberg REST-Katalog anweisen, eingeschränkte Speicheranmeldedaten zurückzugeben, indem Sie die Zugriffsdelegierung angeben, wenn Sie den Iceberg REST-Katalog konfigurieren.
Console
Öffnen Sie in der Google Cloud Console die Seite BigLake.
Klicken Sie auf Katalog erstellen. Die Seite Katalog erstellen wird geöffnet.
Geben Sie unter Cloud Storage-Bucket auswählen den Namen des Cloud Storage-Buckets ein, der für Ihren Katalog verwendet werden soll. Alternativ können Sie auf Durchsuchen klicken, um aus einer Liste vorhandener Buckets auszuwählen oder einen neuen Bucket zu erstellen. Sie können nur einen Katalog pro Cloud Storage-Bucket haben.
Wählen Sie unter Authentication method (Authentifizierungsmethode) die Option Credential vending mode (Modus für Bereitstellung von Anmeldedaten) aus.
Klicken Sie auf Erstellen.
Ihr Katalog wird erstellt und die Seite Katalogdetails wird geöffnet.
Klicken Sie unter Authentifizierungsmethode auf Bucket-Berechtigungen festlegen.
Klicken Sie im Dialogfeld auf Bestätigen.
So wird geprüft, ob das Dienstkonto Ihres Katalogs die Rolle „Storage Object User“ für Ihren Speicher-Bucket hat.
Clientanwendung konfigurieren
Nachdem Sie einen Katalog erstellt haben, konfigurieren Sie Ihre Clientanwendung für die Verwendung des Katalogs. In diesen Beispielen wird gezeigt, wie Sie die Konfiguration mit oder ohne Bereitstellung von Anmeldedaten vornehmen.
Cluster
Wenn Sie Spark mit dem Iceberg-REST-Katalog in Dataproc verwenden möchten, müssen Sie zuerst einen Cluster erstellen, der die Iceberg-Komponente enthält:
gcloud dataproc clusters create CLUSTER_NAME \ --enable-component-gateway \ --project=PROJECT_ID \ --region=REGION \ --optional-components=ICEBERG \ --image-version=DATAPROC_VERSION
Ersetzen Sie Folgendes:
CLUSTER_NAME: ein Name für Ihren Cluster.PROJECT_ID: Projekt-ID in Google Cloud .REGION: die Region für den Dataproc-Cluster.DATAPROC_VERSION: die Dataproc-Image-Version, z. B.2.2.
Nachdem Sie den Cluster erstellt haben, konfigurieren Sie Ihre Spark-Sitzung für die Verwendung des Iceberg-REST-Katalogs:
import pyspark from pyspark.context import SparkContext from pyspark.sql import SparkSession catalog_name = "CATALOG_NAME" spark = SparkSession.builder.appName("APP_NAME") \ .config(f'spark.sql.catalog.{catalog_name}', 'org.apache.iceberg.spark.SparkCatalog') \ .config(f'spark.sql.catalog.{catalog_name}.type', 'rest') \ .config(f'spark.sql.catalog.{catalog_name}.uri', 'https://biglake.googleapis.com/iceberg/v1/restcatalog') \ .config(f'spark.sql.catalog.{catalog_name}.warehouse', 'WAREHOUSE_PATH') \ .config(f'spark.sql.catalog.{catalog_name}.header.x-goog-user-project', 'PROJECT_ID') \ .config(f'spark.sql.catalog.{catalog_name}.rest.auth.type', 'org.apache.iceberg.gcp.auth.GoogleAuthManager') \ .config(f'spark.sql.catalog.{catalog_name}.io-impl', 'org.apache.iceberg.gcp.gcs.GCSFileIO') \ .config(f'spark.sql.catalog.{catalog_name}.rest-metrics-reporting-enabled', 'false') \ .config('spark.sql.extensions', 'org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions') \ .config('spark.sql.defaultCatalog', 'CATALOG_NAME') \ .getOrCreate()
Ersetzen Sie Folgendes:
CATALOG_NAME: Der Name Ihres Iceberg-REST-Katalogs.APP_NAME: Ein Name für Ihre Spark-Sitzung.WAREHOUSE_PATH: Der Pfad zu Ihrem Warehouse. Verwenden Siegs://CLOUD_STORAGE_BUCKET_NAME. Informationen zur Verwendung der BigQuery-Katalogföderation finden Sie unter Katalogföderation mit BigQuery verwenden.PROJECT_ID: Das Projekt, das für die Verwendung des Iceberg REST-Katalogs abgerechnet wird. Dies kann sich vom Projekt unterscheiden, in dem sich der Cloud Storage-Bucket befindet. Weitere Informationen zur Projektkonfiguration bei Verwendung einer REST API finden Sie unter Systemparameter.
Konfiguration mit der Bereitstellung von Anmeldedaten
Wenn Sie die Bereitstellung von Anmeldedaten verwenden möchten, müssen Sie einen Katalog im Modus für die Bereitstellung von Anmeldedaten verwenden und den Header X-Iceberg-Access-Delegation zu Iceberg-REST-Kataloganfragen mit dem Wert vended-credentials hinzufügen. Fügen Sie dazu die folgende Zeile zum SparkSession-Builder hinzu:
.config(f'spark.sql.catalog.{catalog_name}.header.X-Iceberg-Access-Delegation','vended-credentials')
Beispiel mit Bereitstellung von Anmeldedaten
Im folgenden Beispiel wird die Abfrage-Engine mit der Bereitstellung von Anmeldedaten konfiguriert:
import pyspark from pyspark.context import SparkContext from pyspark.sql import SparkSession catalog_name = "CATALOG_NAME" spark = SparkSession.builder.appName("APP_NAME") \ .config(f'spark.sql.catalog.{catalog_name}', 'org.apache.iceberg.spark.SparkCatalog') \ .config(f'spark.sql.catalog.{catalog_name}.type', 'rest') \ .config(f'spark.sql.catalog.{catalog_name}.uri', 'https://biglake.googleapis.com/iceberg/v1/restcatalog') \ .config(f'spark.sql.catalog.{catalog_name}.warehouse', 'gs://CLOUD_STORAGE_BUCKET_NAME') \ .config(f'spark.sql.catalog.{catalog_name}.header.x-goog-user-project', 'PROJECT_ID') \ .config(f'spark.sql.catalog.{catalog_name}.rest.auth.type', 'org.apache.iceberg.gcp.auth.GoogleAuthManager') \ .config(f'spark.sql.catalog.{catalog_name}.io-impl', 'org.apache.iceberg.gcp.gcs.GCSFileIO') \ .config(f'spark.sql.catalog.{catalog_name}.header.X-Iceberg-Access-Delegation','vended-credentials') \ .config(f'spark.sql.catalog.{catalog_name}.rest-metrics-reporting-enabled', 'false') \ .config('spark.sql.extensions', 'org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions') \ .config('spark.sql.defaultCatalog', 'CATALOG_NAME') \ .getOrCreate()
Weitere Informationen finden Sie in der Iceberg-Dokumentation im Abschnitt Header in RESTCatalog.
Dataproc-Cluster unterstützen Google-Autorisierungsabläufe für Iceberg in den folgenden Versionen:
- Dataproc in Compute Engine-Image-Versionen 2.2.65 und höher.
- Dataproc in Compute Engine-Image-Versionen 2.3.11 und höher.
Serverlos
Senden Sie eine PySpark-Batcharbeitslast an Google Cloud Serverless for Apache Spark mit der folgenden Konfiguration:
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=WAREHOUSE_PATH,\ spark.sql.catalog.CATALOG_NAME.io-impl=org.apache.iceberg.gcp.gcs.GCSFileIO,\ 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.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions,\ spark.sql.catalog.CATALOG_NAME.rest-metrics-reporting-enabled=false"
Ersetzen Sie Folgendes:
PYSPARK_FILE: Dergs://Cloud Storage-Pfad zu Ihrer PySpark-Anwendungsdatei.PROJECT_ID: Projekt-ID in Google Cloud .REGION: die Region für die Dataproc-Batcharbeitslast.RUNTIME_VERSION: die Laufzeitversion von Serverless for Apache Spark, z. B.2.2.CATALOG_NAME: Der Name Ihres Iceberg-REST-Katalogs.WAREHOUSE_PATH: Der Pfad zu Ihrem Warehouse. Verwenden Siegs://CLOUD_STORAGE_BUCKET_NAME. Informationen zur Verwendung der BigQuery-Katalogföderation finden Sie unter Katalogföderation mit BigQuery verwenden.
Konfiguration mit der Bereitstellung von Anmeldedaten
Wenn Sie die Bereitstellung von Anmeldedaten verwenden möchten, müssen Sie einen Katalog im Bereitstellungsmodus für Anmeldedaten verwenden und den Header X-Iceberg-Access-Delegation mit dem Wert vended-credentials zu Iceberg REST-Kataloganfragen hinzufügen. Fügen Sie dazu die folgende Zeile zu den Serverless for Apache Spark-Konfigurationen hinzu:
.config(f'spark.sql.catalog.{catalog_name}.header.X-Iceberg-Access-Delegation','vended-credentials')
Beispiel mit Bereitstellung von Anmeldedaten
Im folgenden Beispiel wird die Abfrage-Engine mit der Bereitstellung von Anmeldedaten konfiguriert:
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=gs://CLOUD_STORAGE_BUCKET_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.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions,\ spark.sql.catalog.CATALOG_NAME.rest-metrics-reporting-enabled=false, spark.sql.catalog.CATALOG_NAME.header.X-Iceberg-Access-Delegation=vended-credentials"
Weitere Informationen finden Sie in der Iceberg-Dokumentation im Abschnitt Header in RESTCatalog.
Serverless for Apache Spark unterstützt Google-Autorisierungsabläufe für Iceberg in den folgenden Laufzeitversionen:
- Serverless for Apache Spark 2.2-Laufzeiten 2.2.60 und höher
- Serverless for Apache Spark 2.3-Laufzeiten 2.3.10 und höher
Trino
Wenn Sie Trino mit dem Iceberg-REST-Katalog verwenden möchten, erstellen Sie einen Dataproc-Cluster mit der Trino-Komponente und konfigurieren Sie die Katalogattribute mit dem Flag gcloud dataproc clusters create --properties. Im folgenden Beispiel wird ein Trino-Katalog mit dem Namen CATALOG_NAME erstellt:
gcloud dataproc clusters create CLUSTER_NAME \ --enable-component-gateway \ --region=REGION \ --image-version=DATAPROC_VERSION \ --network=NETWORK_ID \ --optional-components=TRINO \ --properties="\ trino-catalog:CATALOG_NAME.connector.name=iceberg,\ trino-catalog:CATALOG_NAME.iceberg.catalog.type=rest,\ trino-catalog:CATALOG_NAME.iceberg.rest-catalog.uri=https://biglake.googleapis.com/iceberg/v1/restcatalog,\ trino-catalog:CATALOG_NAME.iceberg.rest-catalog.warehouse=WAREHOUSE_PATH,\ trino-catalog:CATALOG_NAME.iceberg.rest-catalog.biglake.project-id=PROJECT_ID,\ trino-catalog:CATALOG_NAME.iceberg.rest-catalog.rest.auth.type=org.apache.iceberg.gcp.auth.GoogleAuthManager"
Ersetzen Sie Folgendes:
CLUSTER_NAME: ein Name für Ihren Cluster.REGION: die Region des Dataproc-Clusters.DATAPROC_VERSION: Dataproc-Image-Version, z. B.2.2.NETWORK_ID: Cluster-Netzwerk-ID. Weitere Informationen finden Sie unter Dataproc-Cluster-Netzwerkkonfiguration.CATALOG_NAME: Der Name Ihres Trino-Katalogs, der den Iceberg REST-Katalog verwendet.WAREHOUSE_PATH: Der Pfad zu Ihrem Warehouse. Verwenden Siegs://CLOUD_STORAGE_BUCKET_NAME.PROJECT_ID: Ihre Google Cloud Projekt-ID, die für BigLake Metastore verwendet werden soll.
Stellen Sie nach dem Erstellen des Clusters eine Verbindung zur Haupt-VM-Instanz her und verwenden Sie die Trino-Befehlszeile:
trino --catalog=CATALOG_NAME
Dataproc Trino unterstützt Google-Autorisierungsabläufe für Iceberg in den folgenden Versionen:
- Dataproc in Compute Engine-Laufzeitversionen 2.2.65 und höher
- Dataproc in Compute Engine-Laufzeitversionen 2.3.11 und höher
- Dataproc auf Compute Engine 3.0 wird nicht unterstützt.
Konfiguration mit der Bereitstellung von Anmeldedaten
Die Bereitstellung von Anmeldedaten wird in Dataproc Trino nicht unterstützt.
Iceberg 1.10 oder höher
Open-Source-Versionen von Iceberg 1.10 und höher bieten integrierte Unterstützung für Google-Autorisierungsabläufe in GoogleAuthManager. Im Folgenden sehen Sie ein Beispiel für die Konfiguration von Apache Spark zur Verwendung des Iceberg REST-Katalogs von BigLake Metastore.
import pyspark from pyspark.context import SparkContext from pyspark.sql import SparkSession catalog_name = "CATALOG_NAME" spark = SparkSession.builder.appName("APP_NAME") \ .config(f'spark.sql.catalog.{catalog_name}', 'org.apache.iceberg.spark.SparkCatalog') \ .config(f'spark.sql.catalog.{catalog_name}.type', 'rest') \ .config(f'spark.sql.catalog.{catalog_name}.uri', 'https://biglake.googleapis.com/iceberg/v1/restcatalog') \ .config(f'spark.sql.catalog.{catalog_name}.warehouse', 'WAREHOUSE_PATH') \ .config(f'spark.sql.catalog.{catalog_name}.header.x-goog-user-project', 'PROJECT_ID') \ .config(f'spark.sql.catalog.{catalog_name}.rest.auth.type', 'org.apache.iceberg.gcp.auth.GoogleAuthManager') \ .config(f'spark.sql.catalog.{catalog_name}.io-impl', 'org.apache.iceberg.gcp.gcs.GCSFileIO') \ .config(f'spark.sql.catalog.{catalog_name}.rest-metrics-reporting-enabled', 'false') \ .config('spark.sql.extensions', 'org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions') \ .config('spark.sql.defaultCatalog', 'CATALOG_NAME') \ .getOrCreate()
Ersetzen Sie Folgendes:
CATALOG_NAME: Der Name Ihres Iceberg-REST-Katalogs.APP_NAME: Ein Name für Ihre Spark-Sitzung.WAREHOUSE_PATH: Der Pfad zu Ihrem Warehouse. Verwenden Siegs://CLOUD_STORAGE_BUCKET_NAME. Informationen zur Verwendung der BigQuery-Katalogföderation finden Sie unter Katalogföderation mit BigQuery verwenden.PROJECT_ID: Das Projekt, das für die Verwendung des Iceberg REST-Katalogs abgerechnet wird. Dies kann sich vom Projekt unterscheiden, zu dem der Cloud Storage-Bucket gehört. Weitere Informationen zur Projektkonfiguration bei Verwendung einer REST API finden Sie unter Systemparameter.
Konfiguration mit der Bereitstellung von Anmeldedaten
Im vorherigen Beispiel wird die Bereitstellung von Anmeldedaten nicht verwendet. Wenn Sie die Bereitstellung von Anmeldedaten verwenden möchten, müssen Sie einen Katalog im Bereitstellungsmodus für Anmeldedaten verwenden und den Header X-Iceberg-Access-Delegation zu Iceberg REST-Kataloganfragen mit dem Wert vended-credentials hinzufügen. Fügen Sie dazu die folgende Zeile zum SparkSession-Builder hinzu:
.config(f'spark.sql.catalog.{catalog_name}.header.X-Iceberg-Access-Delegation','vended-credentials')
Beispiel mit Bereitstellung von Anmeldedaten
Im folgenden Beispiel wird die Abfrage-Engine mit der Bereitstellung von Anmeldedaten konfiguriert:
import pyspark from pyspark.context import SparkContext from pyspark.sql import SparkSession catalog_name = "CATALOG_NAME" spark = SparkSession.builder.appName("APP_NAME") \ .config(f'spark.sql.catalog.{catalog_name}', 'org.apache.iceberg.spark.SparkCatalog') \ .config(f'spark.sql.catalog.{catalog_name}.type', 'rest') \ .config(f'spark.sql.catalog.{catalog_name}.uri', 'https://biglake.googleapis.com/iceberg/v1/restcatalog') \ .config(f'spark.sql.catalog.{catalog_name}.warehouse', 'gs://CLOUD_STORAGE_BUCKET_NAME') \ .config(f'spark.sql.catalog.{catalog_name}.header.x-goog-user-project', 'PROJECT_ID') \ .config(f'spark.sql.catalog.{catalog_name}.rest.auth.type', 'org.apache.iceberg.gcp.auth.GoogleAuthManager') \ .config(f'spark.sql.catalog.{catalog_name}.io-impl', 'org.apache.iceberg.gcp.gcs.GCSFileIO') \ .config(f'spark.sql.catalog.{catalog_name}.header.X-Iceberg-Access-Delegation','vended-credentials') \ .config(f'spark.sql.catalog.{catalog_name}.rest-metrics-reporting-enabled', 'false') \ .config('spark.sql.extensions', 'org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions') \ .config('spark.sql.defaultCatalog', 'CATALOG_NAME') \ .getOrCreate()
Weitere Informationen finden Sie in der Iceberg-Dokumentation im Abschnitt Header in RESTCatalog.
Frühere Iceberg-Releases
Für Open-Source-Iceberg-Releases vor Version 1.10 können Sie die standardmäßige OAuth-Authentifizierung konfigurieren, indem Sie eine Sitzung mit Folgendem konfigurieren:
import pyspark from pyspark.context import SparkContext from pyspark.sql import SparkSession catalog_name = "CATALOG_NAME" spark = SparkSession.builder.appName("APP_NAME") \ .config('spark.jars.packages', 'org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.9.1,org.apache.iceberg:iceberg-gcp-bundle:1.9.1') \ .config(f'spark.sql.catalog.{catalog_name}', 'org.apache.iceberg.spark.SparkCatalog') \ .config(f'spark.sql.catalog.{catalog_name}.type', 'rest') \ .config(f'spark.sql.catalog.{catalog_name}.uri', 'https://biglake.googleapis.com/iceberg/v1/restcatalog') \ .config(f'spark.sql.catalog.{catalog_name}.warehouse', 'WAREHOUSE_PATH') \ .config(f'spark.sql.catalog.{catalog_name}.header.x-goog-user-project', 'PROJECT_ID') \ .config(f"spark.sql.catalog.{catalog_name}.token", "TOKEN") \ .config(f"spark.sql.catalog.{catalog_name}.oauth2-server-uri", "https://oauth2.googleapis.com/token") \ .config(f'spark.sql.catalog.{catalog_name}.io-impl', 'org.apache.iceberg.gcp.gcs.GCSFileIO') \ .config(f'spark.sql.catalog.{catalog_name}.rest-metrics-reporting-enabled', 'false') \ .config('spark.sql.extensions', 'org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions') \ .config('spark.sql.defaultCatalog', 'CATALOG_NAME') \ .getOrCreate()
Ersetzen Sie Folgendes:
CATALOG_NAME: Der Name Ihres Iceberg-REST-Katalogs.APP_NAME: Ein Name für Ihre Spark-Sitzung.WAREHOUSE_PATH: Der Pfad zu Ihrem Warehouse. Verwenden Siegs://CLOUD_STORAGE_BUCKET_NAME. Informationen zur Verwendung der BigQuery-Katalogföderation finden Sie unter Katalogföderation mit BigQuery verwenden.PROJECT_ID: Das Projekt, das für die Verwendung des Iceberg REST-Katalogs abgerechnet wird. Dies kann sich vom Projekt unterscheiden, dem der Cloud Storage-Bucket gehört. Weitere Informationen zur Projektkonfiguration bei Verwendung einer REST API finden Sie unter Systemparameter.TOKEN: Ihr Authentifizierungstoken, das eine Stunde lang gültig ist, z. B. ein mitgcloud auth application-default print-access-tokengeneriertes Token.
Mit Bereitstellung von Anmeldedaten konfigurieren
Im vorherigen Beispiel wird die Bereitstellung von Anmeldedaten nicht verwendet. Wenn Sie die Bereitstellung von Anmeldedaten verwenden möchten, müssen Sie einen Katalog im Bereitstellungsmodus für Anmeldedaten verwenden und den Header X-Iceberg-Access-Delegation zu Iceberg REST-Kataloganfragen mit dem Wert vended-credentials hinzufügen. Fügen Sie dazu die folgende Zeile zum SparkSession-Builder hinzu:
.config(f'spark.sql.catalog.{catalog_name}.header.X-Iceberg-Access-Delegation','vended-credentials')
Beispiel mit Bereitstellung von Anmeldedaten
Im folgenden Beispiel wird die Abfrage-Engine mit der Bereitstellung von Anmeldedaten konfiguriert:
import pyspark from pyspark.context import SparkContext from pyspark.sql import SparkSession catalog_name = "CATALOG_NAME" spark = SparkSession.builder.appName("APP_NAME") \ .config(f'spark.sql.catalog.{catalog_name}', 'org.apache.iceberg.spark.SparkCatalog') \ .config(f'spark.sql.catalog.{catalog_name}.type', 'rest') \ .config(f'spark.sql.catalog.{catalog_name}.uri', 'https://biglake.googleapis.com/iceberg/v1/restcatalog') \ .config(f'spark.sql.catalog.{catalog_name}.warehouse', 'gs://CLOUD_STORAGE_BUCKET_NAME') \ .config(f'spark.sql.catalog.{catalog_name}.header.x-goog-user-project', 'PROJECT_ID') \ .config(f"spark.sql.catalog.{catalog_name}.token", "TOKEN") \ .config(f"spark.sql.catalog.{catalog_name}.oauth2-server-uri", "https://oauth2.googleapis.com/token") \ .config(f'spark.sql.catalog.{catalog_name}.io-impl', 'org.apache.iceberg.gcp.gcs.GCSFileIO') \ .config(f'spark.sql.catalog.{catalog_name}.header.X-Iceberg-Access-Delegation','vended-credentials') \ .config(f'spark.sql.catalog.{catalog_name}.rest-metrics-reporting-enabled', 'false') \ .config('spark.sql.extensions', 'org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions') \ .config('spark.sql.defaultCatalog', 'CATALOG_NAME') \ .getOrCreate()
Weitere Informationen finden Sie in der Iceberg-Dokumentation im Abschnitt Header in RESTCatalog.
Namespace oder Schema erstellen
Nachdem Sie Ihren Client konfiguriert haben, erstellen Sie einen Namespace oder ein Schema, um Ihre Tabellen zu organisieren. Die Syntax zum Erstellen eines Namespace oder Schemas variiert je nach Abfrage-Engine. In den folgenden Beispielen wird gezeigt, wie Sie sie mit Spark und Trino erstellen.
Spark
Cloud Storage-Warehouse
spark.sql("CREATE NAMESPACE IF NOT EXISTS NAMESPACE_NAME;") spark.sql("USE NAMESPACE_NAME;")
Ersetzen Sie NAMESPACE_NAME durch einen Namen für den Namespace.
Trino
Cloud Storage-Warehouse
CREATE SCHEMA IF NOT EXISTS CATALOG_NAME.SCHEMA_NAME; USE CATALOG_NAME.SCHEMA_NAME;
Ersetzen Sie Folgendes:
CATALOG_NAME: Der Name Ihres Trino-Katalogs, der den Iceberg REST-Katalog verwendet.SCHEMA_NAME: Ein Name für Ihr Schema.
Tabellen in BigQuery abfragen
Wie Sie Tabellen abfragen, die Sie über den Iceberg REST-Katalog in BigQuery erstellen, hängt davon ab, ob Sie ein Cloud Storage-Bucket-Warehouse oder die BigQuery-Föderation verwenden.
- Cloud Storage-Bucket-Warehouse: Wenn Sie Ihren Client mit einem
gs://-Warehouse-Pfad konfiguriert haben, fragen Sie Tabellen aus BigQuery mit dem vierteiligen Namen (P.C.N.T)project.catalog.namespace.tableab. Die Komponentecatalogist der Name Ihrer BigLake Metastore-Katalogressource. Weitere Informationen finden Sie unter Tabelle abfragen. BigQuery-Föderation: Wenn Sie Ihren Client mit einem
bq://-Warehouse-Pfad konfiguriert haben, sind die von Ihnen erstellten Tabellen in BigQuery sichtbar und können direkt mit Standard-BigQuery-SQL abgefragt werden:SELECT * FROM `NAMESPACE_NAME.TABLE_NAME`;
Ersetzen Sie Folgendes:
NAMESPACE_NAME: Der Name Ihres Namespace.TABLE_NAME: der Name Ihrer Tabelle.
Katalogföderation mit BigQuery verwenden
Sie können die Iceberg-REST-Katalogschnittstelle verwenden, um Tabellen zu verwalten und abzufragen, die für BigQuery sichtbar sind. Für BigQuery-Föderationskataloge müssen Sie keine Katalogressource erstellen. Sie können in jedem Projekt verwendet werden, in dem die BigQuery API aktiviert ist. Damit können Sie:
- Externe Iceberg-Tabellen in BigQuery erstellen und verwalten
- BigLake-Tabellen für Apache Iceberg in BigQuery mit dem Iceberg REST-Katalog abfragen
Da diese Ressourcen von BigQuery verwaltet werden, benötigen Sie die entsprechenden erforderlichen Berechtigungen. Die Bereitstellung von Anmeldedaten wird für föderierte Kataloge nicht unterstützt.
Um die Föderation zu aktivieren, konfigurieren Sie Ihren Client mit dem Warehouse-Format bq://projects/PROJECT_ID im Feld WAREHOUSE_PATH in den Clientkonfigurationsbeispielen unter Iceberg-REST-Katalog verwenden.
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.
Nachdem Sie Ihren Client für die Fö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 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 Iceberg REST-Katalog 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.
Preise
Preisdetails finden Sie unter BigLake-Preise.