Lakehouse Iceberg-REST-Katalogendpunkt einrichten

Für neue Kataloge empfehlen wir die Verwendung des Apache Iceberg REST-Katalogendpunkts im Lakehouse-Laufzeitkatalog. Dieser Endpunkt bietet eine vollständig verwaltete, standardisierte Schnittstelle, die auf der Open-Source-Apache Iceberg REST Catalog API basiert.

Dieser Endpunkt dient als zentrale Informationsquelle und ermöglicht eine nahtlose Interoperabilität zwischen Ihren Abfrage-Engines. Damit können Engines wie Apache Spark Ihre Google Cloud Lakehouse-Tabellen erkennen, lesen und verwalten.

Dieser Ansatz ist eine gute Wahl, wenn Sie kompatible OSS- oder Drittanbieter-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.

Im Gegensatz dazu ist der benutzerdefinierte Apache Iceberg-Katalog für BigQuery-Endpunkt eine frühere Integration. Vorhandene Workflows können weiterhin darauf zugreifen, aber der REST-Katalog bietet eine standardisierte und funktionsreiche Umgebung.

Hinweis

Machen Sie sich mit dem Lakehouse-Laufzeitkatalog und der Übersicht über Iceberg-REST-Katalogendpunkte vertraut, bevor Sie fortfahren.

Wenn Sie vorhandene Apache Iceberg-Tabellen der Version 1 (V1) haben, müssen Sie sie aktualisieren, bevor Sie sie mit dem Apache Iceberg REST-Katalogendpunkt verwenden können. Weitere Informationen finden Sie unter Iceberg-Tabellen der Version 1 auf Version 2 aktualisieren.

  1. Prüfen Sie, ob die Abrechnung für Ihr Google Cloud Projekt aktiviert ist.

  2. 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 Berechtigung serviceusage.services.enable enthält. Weitere Informationen zum Zuweisen von Rollen

    API aktivieren

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Verwenden des Apache Iceberg REST-Katalogendpunkts im Lakehouse-Laufzeitkatalog 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:
  • Tabellen in einem BigLake-Katalog registrieren: BigLake-Administrator (roles/biglake.admin) für das Projekt.
  • Tabellendaten im Credential Vending-Modus lesen: BigLake-Betrachter (roles/biglake.viewer) für das Projekt. Wenn Sie Abfrage-Engines wie Managed Service for Apache Spark, Managed Service for Apache Spark oder Dataflow zum Lesen von Tabellendaten verwenden, weisen Sie dem Dienstkonto, mit dem Sie Jobs in dieser Engine ausführen, diese Rolle zu.
  • Tabellendaten im Credential Vending-Modus schreiben: BigLake-Editor (roles/biglake.editor) für das Projekt. Wenn Sie Abfrage-Engines wie Managed Service for Apache Spark, Managed Service for Apache Spark oder Dataflow zum Schreiben von Tabellendaten verwenden, weisen Sie diese Rolle dem Dienstkonto zu, mit dem Sie Jobs in dieser Engine ausführen.
  • Verwenden Sie das automatisch bereitgestellte Dienstkonto des Lakehouse-Laufzeitkatalogs im Credential Vending-Modus mit der Rolle Storage Object User (roles/storage.objectUser) für alle zugehörigen Cloud Storage-Buckets. Nachdem Sie den Katalog erstellt haben, weisen Sie dem automatisch bereitgestellten Dienstkonto des Lakehouse-Laufzeitkatalogs die Rolle „Storage Object User“ (roles/storage.objectUser) für alle zugehörigen Storage-Buckets zu.
  • Katalogressourcen und Tabellendaten im Modus ohne Bereitstellung von Anmeldedaten lesen:
  • Katalogressourcen verwalten und Tabellendaten im Modus ohne Bereitstellung von Anmeldedaten schreiben:

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

Der Apache Iceberg-REST-Katalogendpunkt unterliegt den folgenden Einschränkungen:

Allgemeine Einschränkungen

  • Apache Iceberg-Tabellen der Version 2 (allgemein verfügbar) und Version 3 (Vorschau) werden unterstützt. Iceberg V1-Tabellen werden nicht unterstützt. Bevor Sie vorhandene V1-Tabellen mit dem Apache Iceberg REST-Katalogendpunkt verwenden können, müssen Sie sie auf eine unterstützte Version aktualisieren.
  • Trino wird nur mit der BigQuery-Katalogföderation unterstützt, wenn Sie Managed Service for Apache Spark auf Compute Engine-Image-Versionen 2.3.16 und höher verwenden.
  • Wenn Sie den Modus für die Bereitstellung von Anmeldedaten verwenden und die Abfrage-Engine es Ihnen erlaubt, die Eigenschaft io-impl für eine Katalogverbindung festzulegen, müssen Sie sie auf org.apache.iceberg.gcp.gcs.GCSFileIO setzen.
  • Buckets mit hierarchischen Namespaces werden derzeit nicht im Credential Vending-Modus unterstützt.

Tabellenbeschränkungen

  • Sie können keine Tabellen im Apache Iceberg REST-Katalogendpunkt mit DDL-Anweisungen (Data Definition Language, Datendefinitionssprache) oder DML-Anweisungen (Data Manipulation Language, Datenbearbeitungssprache) von BigQuery erstellen oder ändern. Sie können diese Tabellen mit der BigQuery API (mit dem bq-Befehlszeilentool oder Clientbibliotheken) ändern. Dabei besteht jedoch das Risiko, dass Sie Änderungen vornehmen, die nicht mit der externen Engine kompatibel sind.
  • Tabellen, die über den Apache Iceberg REST-Katalogendpunkt verwaltet werden, unterstützen keine detaillierte Zugriffssteuerung (Fine-Grained Access Control, FGAC), z. B. Sicherheit auf Zeilen- und Spaltenebene.
  • Das Festlegen der Iceberg-Tabelleneigenschaften write.data.path oder write.metadata.path auf andere Werte als die Standardwerte ist nicht zulässig.
  • Tabellenpfade müssen im Pfad des übergeordneten Namespace verschachtelt sein (z. B. gs://{namespace_path}/.../{table_name}). Um Konflikte zu vermeiden und die Sicherheit zu verbessern, wird dem resultierenden Speicherort automatisch ein zufälliges String-Suffix angehängt (z. B. gs://{namespace_path}/{table_name}/{random_suffix}).

Dateneinschränkungen

  • Es werden nur Parquet-Dateien unterstützt. Weitere Informationen dazu, wie BigQuery Parquet-Dateien verarbeitet, finden Sie unter Parquet-Daten aus Cloud Storage laden.
  • Die Dateigröße für Iceberg-metadata.json-Dateien ist auf 1 MB begrenzt. Wenn Sie eine Erhöhung dieses Limits beantragen möchten, wenden Sie sich an Ihr Google-Account-Team.

Abfragebeschränkungen

  • Apache Iceberg-Metadatentabellen (z. B. .snapshots oder .files) können in BigQuery nicht mit fünfteiligen Namens-IDs abgefragt werden. Sie können diese Tabellen mit Spark abfragen.

Iceberg-REST-Katalogendpunkt einrichten

Bevor Sie Ihren Katalog einrichten, sollten Sie die Übersicht über Apache Iceberg REST-Katalogendpunkte lesen, um sich mit der Ressourcenhierarchie, den Katalogtypen und der Namensstruktur vertraut zu machen.

Im Folgenden finden Sie die allgemeinen Schritte, die Sie ausführen müssen, wenn Sie den Apache Iceberg REST-Katalogendpunkt im Lakehouse-Laufzeitkatalog verwenden:

  1. Wählen Sie anhand der Übersicht über Iceberg-REST-Katalogendpunkte Ihren Katalogtyp aus. Damit kann ein Katalog mit mehreren Buckets (bl://) (empfohlen) oder ein Katalog mit einem Bucket (gs://) konfiguriert werden.
  2. Erstellen Sie einen Katalog, der auf den Standort Ihres Warenlagers verweist.
  3. Konfigurieren Sie Ihre Clientanwendung für die Verwendung des Apache Iceberg-REST-Katalogendpunkts.
  4. Erstellen Sie einen Namespace oder ein Schema, um Ihre Tabellen zu organisieren.
  5. Tabellen mit dem konfigurierten Client erstellen und abfragen

Hinweise

Berücksichtigen Sie die folgenden Optionen für den Anmeldedatenmodus und die Speicherkonfiguration.

Anmeldedatenmodus (Bereich)

Sie können einen Katalog erstellen, der entweder Anmeldedaten von Endnutzern oder den Modus für die Bereitstellung von Anmeldedaten verwendet.

  • Endnutzeranmeldedaten:Der Katalog übergibt die Identität des Endnutzers, der darauf zugreift, zur Autorisierungsprüfung an Cloud Storage.

  • Credential-Vending-Modus:Ein Delegierungsmechanismus für den Speicherzugriff, mit dem Administratoren des Lakehouse-Laufzeitkatalogs Berechtigungen direkt für Ressourcen des Lakehouse-Laufzeitkatalogs steuern können. Dadurch ist kein direkter Zugriff von Katalognutzern auf Cloud Storage-Buckets erforderlich. Damit können Lakehouse-Administratoren in Google Cloud Nutzern Berechtigungen für bestimmte Datendateien erteilen.

Bucket-Typ

Sie können einen Katalog mit einem oder mehreren Buckets erstellen.

  • Mehrere Buckets (bl://) (empfohlen): Mit dieser Konfiguration können Sie Ihrem Katalog mehrere Buckets zuordnen und ihn unabhängig von einem Bucket-Namen benennen. Kataloge mit mehreren Buckets werden in der Google Cloud -Konsole nicht unterstützt.
  • Einzelner Bucket (gs://): Bei dieser Konfiguration ist Ihr Katalog auf einen einzelnen Bucket beschränkt und der Katalogname ist an den Bucket-Namen gebunden. Für neue Projekte wird davon abgeraten.

Standort

Machen Sie sich mit den Standortanforderungen vertraut, bevor Sie einen Katalog erstellen.

  • Wenn Sie einen Namespace erstellen, wird automatisch dieselbe Region wie für Ihren Katalog verwendet.

  • Wenn Ihr Katalog einen multiregionalen Bucket verwendet und Sie ihn mit den BigQuery-Multiregionen (US oder EU) verwenden möchten, müssen Sie den Katalog löschen und neu erstellen, um den primären Standort anzugeben.

Katalog erstellen

Gehen Sie so vor, um einen Katalog basierend auf dem gewünschten Anmeldedatenmodus und Bucket-Typ zu erstellen.

Anmeldedaten für Endnutzer

Console

  1. Öffnen Sie in der Google Cloud Console die Seite Lakehouse.

    Lakehouse aufrufen

  2. Klicken Sie auf Katalog erstellen.

  3. Wählen Sie für Katalogtyp die Option Cloud Storage-Bucket aus.

  4. Geben Sie den Cloud Storage-Bucket ein, der für Ihren Katalog verwendet werden soll, oder suchen Sie danach. Bei einem Katalog mit einem Bucket (gs://) kann es nur einen Katalog pro Bucket geben und der Katalogname entspricht dem Bucket-Namen.

  5. Wählen Sie unter Authentication method (Authentifizierungsmethode) die Option End-user credentials (Anmeldedaten von Endnutzern) aus.

  6. Klicken Sie auf Erstellen.

gcloud

Katalog mit mehreren Buckets (bl://) erstellen (empfohlen)

Mit dieser Konfiguration können Sie Ihrem Katalog mehrere Buckets zuordnen und ihn unabhängig von einem Bucket-Namen benennen.

Führen Sie den Befehl gcloud biglake iceberg catalogs create aus, um einen Katalog mit mehreren Buckets (bl://) zu erstellen (empfohlen).

gcloud biglake iceberg catalogs create \
    CATALOG_NAME \
    --project PROJECT_ID \
    --catalog-type biglake \
    --default-location DEFAULT_LOCATION \
    [--restricted-locations RESTRICTED_LOCATIONS] \
    --credential-mode end-user \
    [--primary-location LOCATION]

Katalog mit einem Bucket (gs://) erstellen

Führen Sie den folgenden Befehl aus, um einen Katalog mit einem Bucket (gs://) zu erstellen:

gcloud 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 Katalogen mit mehreren Buckets (bl://) (empfohlen) ist dies der Name Ihres benutzerdefinierten Katalogs. Bei Katalogen mit einem Bucket (gs://) entspricht dies der Cloud Storage-Bucket-ID, die mit dem REST-Katalog verwendet wird. Dieser Name wird auch als Katalog-ID verwendet, wenn diese Tabellen in BigQuery abgefragt werden.
  • PROJECT_ID: Projekt-ID in Google Cloud .
  • DEFAULT_LOCATION: Geben Sie den Standardspeicherort für den Katalog an. Sie können einen Bucket (gs://my-bucket) oder einen Unterpfad (gs://my-bucket/path) angeben. Alle Namespaces und Tabellen im Katalog müssen sich unter dem angegebenen Pfad befinden. Wenn Sie beispielsweise gs://my-bucket/path angeben, können Sie keine Namespaces oder Tabellen unter gs://my-bucket/another/path erstellen.
  • RESTRICTED_LOCATIONS: (Optional) Durch Kommas getrennte Liste mit zusätzlichen zulässigen Speicherorten im Format gs://my-bucket-1/...,gs://my-bucket-2/.... Wenn Sie einen Pfad angeben (z. B. gs://my-bucket/path), müssen sich alle Namespaces oder Tabellen in diesem Bucket unter diesem Pfad befinden. Alle konfigurierten Cloud Storage-Speicherorte im Standardstandort und in eingeschränkten Standorten müssen sich in derselben geografischen Region oder Gerichtsbarkeit befinden (z. B. USA, Europa, Kanada oder Asien). So können Sie beispielsweise keinen Bucket in den USA mit einem Bucket in Europa kombinieren. Eine Liste der unterstützten Standorte finden Sie unter Lakehouse-Standorte. Sicherheitswarnung:Konfigurieren Sie keine sich überschneidenden Pfade mit anderen Katalogen, um unbefugte Offenlegung von Anmeldedaten zu verhindern. Weitere Informationen finden Sie unter Speicher über mehrere Buckets hinweg.
  • LOCATION: (Optional) Die primäre Region für den Katalog, um die Interoperabilität mit BigQuery zu gewährleisten. Geben Sie für Cloud Storage-Buckets in der Region „US“ (z. B. US oder us-central1) oder in der Region „EU“ (z. B. EU oder europe-west4) US bzw. EU an, damit der Katalog von den entsprechenden BigQuery-Multiregionen aus zugänglich ist und abgefragt werden kann. Weitere Informationen finden Sie unter Bucket- und Katalogregionen.

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 Apache Iceberg-REST-Katalogendpunkt anweisen, eingeschränkte Speicheranmeldedaten zurückzugeben. Dazu geben Sie die Zugriffsdelegierung an, wenn Sie den Apache Iceberg-REST-Katalogendpunkt konfigurieren.

Für das automatisch bereitgestellte Dienstkonto des Lakehouse-Laufzeitkatalogs ist die explizite Rolle „Storage Object User“ (roles/storage.objectUser) für alle zugehörigen Cloud Storage-Buckets erforderlich. Standardmäßig hat sie keinen Zugriff. Ohne diese Rolle haben die bereitgestellten Anmeldedaten nicht genügend Berechtigungen, um Speichervorgänge auszuführen. Wenn Sie Tools wie gcloud oder Terraform verwenden, müssen Sie diese Rolle manuell zuweisen.

Console

  1. Öffnen Sie in der Google Cloud Console die Seite Lakehouse.

    Lakehouse aufrufen

  2. Klicken Sie auf  Katalog erstellen. Die Seite Katalog erstellen wird geöffnet.

  3. Wählen Sie für Katalogtyp die Option Cloud Storage-Bucket aus.

  4. Geben Sie den Cloud Storage-Bucket ein, der für Ihren Katalog verwendet werden soll, oder suchen Sie danach. Bei einem Katalog mit einem Bucket (gs://) kann es nur einen Katalog pro Bucket geben und der Katalogname entspricht dem Bucket-Namen.

  5. Wählen Sie unter Authentication method (Authentifizierungsmethode) die Option Credential vending mode (Modus für Bereitstellung von Anmeldedaten) aus.

  6. Klicken Sie auf Erstellen.

    Ihr Katalog wird erstellt und die Seite Katalogdetails wird geöffnet.

  7. Klicken Sie unter Authentifizierungsmethode auf Bucket-Berechtigungen festlegen.

  8. Klicken Sie im Dialogfeld auf Bestätigen.

    Dadurch wird überprüft, ob das Dienstkonto Ihres Katalogs die Rolle „Storage Object User“ für alle zugehörigen Storage-Buckets hat.

gcloud

Katalog mit mehreren Buckets (bl://) erstellen (empfohlen)

Mit dieser Konfiguration können Sie Ihrem Katalog mehrere Buckets zuordnen und ihn unabhängig von einem Bucket-Namen benennen.

Führen Sie den Befehl gcloud biglake iceberg catalogs create aus, um einen Katalog mit mehreren Buckets (bl://) zu erstellen (empfohlen).

gcloud biglake iceberg catalogs create \
    CATALOG_NAME \
    --project PROJECT_ID \
    --catalog-type biglake \
    --default-location DEFAULT_LOCATION \
    [--restricted-locations RESTRICTED_LOCATIONS] \
    --credential-mode vended-credentials \
    [--primary-location LOCATION]

Katalog mit einem Bucket (gs://) erstellen

Führen Sie den folgenden Befehl aus, um einen Katalog mit einem Bucket (gs://) zu erstellen:

gcloud biglake iceberg catalogs create \
    CATALOG_NAME \
    --project PROJECT_ID \
    --catalog-type gcs-bucket \
    --credential-mode vended-credentials

Ersetzen Sie Folgendes:

  • CATALOG_NAME: ein Name für Ihren Katalog. Bei Katalogen mit mehreren Buckets (bl://) (empfohlen) ist dies der Name Ihres benutzerdefinierten Katalogs. Bei Katalogen mit einem Bucket (gs://) entspricht dies der Cloud Storage-Bucket-ID, die mit dem REST-Katalog verwendet wird. Dieser Name wird auch als Katalog-ID verwendet, wenn diese Tabellen in BigQuery abgefragt werden.
  • PROJECT_ID: Projekt-ID in Google Cloud .
  • DEFAULT_LOCATION: Geben Sie den Standardspeicherort für den Katalog an. Sie können einen Bucket (gs://my-bucket) oder einen Unterpfad (gs://my-bucket/path) angeben. Alle Namespaces und Tabellen im Katalog müssen sich unter dem angegebenen Pfad befinden. Wenn Sie beispielsweise gs://my-bucket/path angeben, können Sie keine Namespaces oder Tabellen unter gs://my-bucket/another/path erstellen.
  • RESTRICTED_LOCATIONS: (Optional) Durch Kommas getrennte Liste mit zusätzlichen zulässigen Speicherorten im Format gs://my-bucket-1/...,gs://my-bucket-2/.... Wenn Sie einen Pfad angeben (z. B. gs://my-bucket/path), müssen sich alle Namespaces oder Tabellen in diesem Bucket unter diesem Pfad befinden. Alle konfigurierten Cloud Storage-Speicherorte im Standardstandort und in eingeschränkten Standorten müssen sich in derselben geografischen Region oder Gerichtsbarkeit befinden (z. B. USA, Europa, Kanada oder Asien). So können Sie beispielsweise keinen Bucket in den USA mit einem Bucket in Europa kombinieren. Eine Liste der unterstützten Standorte finden Sie unter Lakehouse-Standorte. Sicherheitswarnung:Konfigurieren Sie keine sich überschneidenden Pfade mit anderen Katalogen, um unbefugte Offenlegung von Anmeldedaten zu verhindern. Weitere Informationen finden Sie unter Speicher über mehrere Buckets hinweg.
  • LOCATION: (Optional) Die primäre Region für den Katalog, um die Interoperabilität mit BigQuery zu gewährleisten. Geben Sie für Cloud Storage-Buckets in der Region „US“ (z. B. US oder us-central1) oder in der Region „EU“ (z. B. EU oder europe-west4) US bzw. EU an, damit der Katalog von den entsprechenden BigQuery-Multiregionen aus zugänglich ist und abgefragt werden kann. Weitere Informationen finden Sie unter Bucket- und Katalogregionen.

    Nachdem Sie den Katalog erstellt haben, weisen Sie dem automatisch bereitgestellten Dienstkonto des Lakehouse-Laufzeitkatalogs Ihres Katalogs explizit die Rolle Storage Object User (roles/storage.objectUser) für alle zugehörigen Speicher-Buckets zu.

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

Erstellen Sie einen Managed Service for Apache Spark on Compute Engine-Cluster mit vereinfachten Konfigurationseigenschaften (empfohlen) oder durch manuelles Angeben von Eigenschaften.

Cluster mit der Katalog-Property erstellen:

gcloud dataproc clusters create CLUSTER_NAME \
  --enable-component-gateway \
  --project=PROJECT_ID \
  --region=REGION \
  --optional-components=ICEBERG \
  --image-version=DATAPROC_VERSION \
  --properties="dataproc.lakehouse.catalog.CATALOG_NAME=projects/PROJECT_ID/catalogs/CATALOG_ID"

Ersetzen Sie Folgendes:

  • CLUSTER_NAME: ein Name für Ihren Cluster.
  • PROJECT_ID: Projekt-ID in Google Cloud .
  • REGION: Die Region des Managed Service for Apache Spark-Clusters.
  • DATAPROC_VERSION: Die Image-Version von Managed Service for Apache Spark, z. B. 2.3.
  • CATALOG_NAME: ein Name für den lokalen Spark-Katalog, z. B. my_catalog. Er kann mit CATALOG_ID identisch sein.
  • CATALOG_ID: die ID des von Ihnen erstellten Katalogs.

Erstellen Sie in der PySpark-Anwendungsdatei die SparkSession, ohne Katalogkonfigurationen anzugeben:

from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("APP_NAME").getOrCreate()

Manuelle Konfiguration

Wenn Sie die vereinfachte Konfigurationseigenschaft nicht verwenden, erstellen Sie einen Cluster wie oben beschrieben, aber ohne das Flag --properties. Konfigurieren Sie dann Ihr SparkSession manuell:

import pyspark
from pyspark.context import SparkContext
from pyspark.sql import SparkSession

catalog_name = "CATALOG_NAME"
spark = SparkSession.builder.appName("APP_NAME") \
  .config('spark.sql.defaultCatalog', 'CATALOG_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/REST_API_VERSION/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('spark.sql.extensions', 'org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions') \
  .getOrCreate()

Ersetzen Sie Folgendes:

  • CATALOG_NAME: ein Name für den lokalen Spark-Katalog, z. B. my_catalog.
  • APP_NAME: Ein Name für Ihre Spark-Sitzung.
  • REST_API_VERSION: Auf v1 für die stabile Version der API festlegen.
  • WAREHOUSE_PATH: Der Pfad zu Ihrem Warehouse. Verwenden Sie für BigLake-Kataloge bl://projects/PROJECT_ID/catalogs/CATALOG_ID. Für Cloud Storage-Bucket-Kataloge verwenden Sie gs://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 Apache Iceberg-REST-Katalogendpunkts 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.

Mit der Bereitstellung von Anmeldedaten konfigurieren

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 mit dem Wert vended-credentials zu Iceberg-REST-Kataloganfragen 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('spark.sql.defaultCatalog', 'CATALOG_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/REST_API_VERSION/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}.header.X-Iceberg-Access-Delegation','vended-credentials') \
  .config('spark.sql.extensions', 'org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions') \
  .getOrCreate()

Weitere Informationen finden Sie in der Apache Iceberg-Dokumentation im Abschnitt Headers in the RESTCatalog.

Managed Service for Apache Spark-Cluster unterstützen Google-Autorisierungsabläufe für Apache Iceberg in den folgenden Versionen:

  • Managed Service for Apache Spark in Compute Engine-Image-Versionen 2.2.65 und höher.
  • Managed Service for Apache Spark in Compute Engine 2.3-Image-Versionen 2.3.11 und höher.

Serverlos

Senden Sie eine PySpark-Batcharbeitslast an Managed Service for Apache Spark. Verwenden Sie dazu vereinfachte Konfigurationseigenschaften (empfohlen) oder geben Sie Eigenschaften manuell an.

Senden Sie einen Batchjob mit der Katalogproperty:

gcloud dataproc batches submit pyspark PYSPARK_FILE \
    --project=PROJECT_ID \
    --region=REGION \
    --version=RUNTIME_VERSION \
    --properties="dataproc.lakehouse.catalog.CATALOG_NAME=projects/PROJECT_ID/catalogs/CATALOG_ID"

Ersetzen Sie Folgendes:

  • PYSPARK_FILE: Der gs:// Cloud Storage-Pfad zu Ihrer PySpark-Anwendungsdatei.
  • PROJECT_ID: Projekt-ID in Google Cloud .
  • REGION: die Region für die Managed Service for Apache Spark-Batcharbeitslast.
  • RUNTIME_VERSION: die Laufzeitversion von Managed Service for Apache Spark, z. B. 2.3.
  • CATALOG_NAME: ein Name für den lokalen Spark-Katalog, z. B. my_catalog. Er kann mit CATALOG_ID identisch sein.
  • CATALOG_ID: die ID des von Ihnen erstellten Katalogs.

Erstellen Sie in der PySpark-Anwendungsdatei die SparkSession, ohne Katalogkonfigurationen anzugeben:

from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("APP_NAME").getOrCreate()

Manuelle Konfiguration

Wenn Sie das vereinfachte Konfigurationsattribut nicht verwenden, müssen Sie Katalogkonfigurationen manuell angeben:

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/REST_API_VERSION/restcatalog,\
    spark.sql.catalog.CATALOG_NAME.warehouse=WAREHOUSE_PATH,\
    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.catalog.CATALOG_NAME.io-impl=org.apache.iceberg.gcp.gcs.GCSFileIO,\
    spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions"

Ersetzen Sie Folgendes:

  • PYSPARK_FILE: Der gs:// Cloud Storage-Pfad zu Ihrer PySpark-Anwendungsdatei.
  • REGION: die Region für die Managed Service for Apache Spark-Batcharbeitslast.
  • RUNTIME_VERSION: die Laufzeitversion von Managed Service for Apache Spark, z. B. 2.3.
  • CATALOG_NAME: ein Name für den lokalen Spark-Katalog, z. B. my_catalog.
  • REST_API_VERSION: Auf v1 für die stabile Version der API festlegen.
  • WAREHOUSE_PATH: Der Pfad zu Ihrem Warehouse. Verwenden Sie für BigLake-Kataloge bl://projects/PROJECT_ID/catalogs/CATALOG_ID. Für Cloud Storage-Bucket-Kataloge verwenden Sie gs://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 Apache Iceberg-REST-Katalogendpunkts 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.

Mit der Bereitstellung von Anmeldedaten konfigurieren

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 den Apache Iceberg-REST-Katalogendpunktanfragen mit dem Wert vended-credentials hinzufügen. Fügen Sie dazu die folgende Zeile den Managed Service 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/REST_API_VERSION/restcatalog,\
    spark.sql.catalog.CATALOG_NAME.warehouse=WAREHOUSE_PATH,\
    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.catalog.CATALOG_NAME.io-impl=org.apache.iceberg.gcp.gcs.GCSFileIO,\
    spark.sql.catalog.CATALOG_NAME.header.X-Iceberg-Access-Delegation=vended-credentials,\"
    spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions

Weitere Informationen finden Sie im Abschnitt Headers in the RESTCatalog der Apache Iceberg-Dokumentation.

Managed Service for Apache Spark unterstützt Google-Autorisierungsabläufe für Apache Iceberg in den folgenden Laufzeitversionen:

  • Managed Service for Apache Spark 2.2-Laufzeiten 2.2.60 und höher
  • Managed Service for Apache Spark 2.3-Laufzeiten 2.3.10 und höher

Trino

Wenn Sie Trino mit dem Apache Iceberg REST-Katalogendpunkt verwenden möchten, erstellen Sie einen Managed Service for Apache Spark-Cluster mit der Trino-Komponente und konfigurieren Sie die Katalogeigenschaften 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/REST_API_VERSION/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 Managed Service for Apache Spark-Clusters.
  • DATAPROC_VERSION: Die Image-Version von Managed Service for Apache Spark, z. B. 2.2.
  • NETWORK_ID: Cluster-Netzwerk-ID. Weitere Informationen finden Sie unter Netzwerkkonfiguration für Managed Service for Apache Spark-Cluster.
  • CATALOG_NAME: Der Name Ihres Trino-Katalogs mit dem Apache Iceberg-REST-Katalogendpunkt.
  • REST_API_VERSION: Auf v1 für die stabile Version der API festlegen.
  • WAREHOUSE_PATH: Der Pfad zu Ihrem Warehouse. Verwenden Sie für BigLake-Kataloge bl://projects/PROJECT_ID/catalogs/CATALOG_ID. Für Cloud Storage-Bucket-Kataloge verwenden Sie gs://CLOUD_STORAGE_BUCKET_NAME.
  • PROJECT_ID: Ihre Google Cloud Projekt-ID für den Lakehouse-Laufzeitkatalog.

Stellen Sie nach dem Erstellen des Clusters eine Verbindung zur Haupt-VM-Instanz her und verwenden Sie die Trino-Befehlszeile:

trino --catalog=CATALOG_NAME

Managed Service for Apache Spark Trino unterstützt Google-Autorisierungsabläufe für Apache Iceberg in den folgenden Versionen:

  • Managed Service for Apache Spark in Compute Engine-Laufzeitversionen 2.2 2.2.65 und höher
  • Managed Service for Apache Spark in Compute Engine-Laufzeitversionen 2.3 2.3.11 und höher
  • Managed Service for Apache Spark in Compute Engine 3.0 wird nicht unterstützt.

Mit der Bereitstellung von Anmeldedaten konfigurieren

Die Bereitstellung von Anmeldedaten wird nur in Trino-Version 481 und höher unterstützt.

Apache Iceberg 1.10 oder höher

Open-Source-Versionen von Apache 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 Spark für die Verwendung des Apache Iceberg-REST-Katalogendpunkts.

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/REST_API_VERSION/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('spark.sql.extensions', 'org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions') \
  .config('spark.sql.defaultCatalog', 'CATALOG_NAME') \
  .getOrCreate()

Ersetzen Sie Folgendes:

  • CATALOG_NAME: ein Name für den lokalen Spark-Katalog, z. B. my_catalog.
  • APP_NAME: Ein Name für Ihre Spark-Sitzung.
  • REST_API_VERSION: Auf v1 für die stabile Version der API festlegen.
  • WAREHOUSE_PATH: Der Pfad zu Ihrem Warehouse. Verwenden Sie für BigLake-Kataloge bl://projects/PROJECT_ID/catalogs/CATALOG_ID. Für Cloud Storage-Bucket-Kataloge verwenden Sie gs://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 Apache Iceberg-REST-Katalogendpunkts 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.

Mit der 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 Modus für die Bereitstellung von Anmeldedaten verwenden und den Header X-Iceberg-Access-Delegation mit dem Wert vended-credentials zu den Apache Iceberg REST-Katalogendpunktanfragen 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/REST_API_VERSION/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}.header.X-Iceberg-Access-Delegation','vended-credentials') \
  .config('spark.sql.extensions', 'org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions') \
  .config('spark.sql.defaultCatalog', 'CATALOG_NAME') \
  .getOrCreate()

Weitere Informationen finden Sie im Abschnitt Headers in the RESTCatalog der Apache Iceberg-Dokumentation.

Frühere Apache Iceberg-Releases

Für Open-Source-Apache Iceberg-Releases vor Version 1.10 können Sie die standardmäßige OAuth-Authentifizierung konfigurieren, indem Sie eine Sitzung mit den folgenden Parametern 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/REST_API_VERSION/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('spark.sql.extensions', 'org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions') \
  .config('spark.sql.defaultCatalog', 'CATALOG_NAME') \
  .getOrCreate()

Ersetzen Sie Folgendes:

  • CATALOG_NAME: ein Name für den lokalen Spark-Katalog, z. B. my_catalog.
  • APP_NAME: Ein Name für Ihre Spark-Sitzung.
  • REST_API_VERSION: Auf v1 für die stabile Version der API festlegen.
  • WAREHOUSE_PATH: Der Pfad zu Ihrem Warehouse. Verwenden Sie für BigLake-Kataloge bl://projects/PROJECT_ID/catalogs/CATALOG_ID. Für Cloud Storage-Bucket-Kataloge verwenden Sie gs://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 Apache Iceberg-REST-Katalogendpunkts 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.
  • TOKEN: Ihr Authentifizierungstoken, das eine Stunde lang gültig ist, z. B. ein mit gcloud auth application-default print-access-token generiertes Token.

Mit der 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 Modus für die Bereitstellung von Anmeldedaten verwenden und den Header X-Iceberg-Access-Delegation mit dem Wert vended-credentials zu den Apache Iceberg REST-Katalogendpunktanfragen 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/REST_API_VERSION/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}.header.X-Iceberg-Access-Delegation','vended-credentials') \
  .config('spark.sql.extensions', 'org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions') \
  .config('spark.sql.defaultCatalog', 'CATALOG_NAME') \
  .getOrCreate()

Weitere Informationen finden Sie im Abschnitt Headers in the RESTCatalog der Apache Iceberg-Dokumentation.

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.

Console

  1. Rufen Sie in der Google Cloud Console Lakehouse auf.

    Lakehouse aufrufen

  2. Wählen Sie einen vorhandenen Katalog aus oder erstellen Sie einen, falls Sie noch keinen haben.

  3. Klicken Sie in der Menüleiste auf + Namespace erstellen.

  4. Geben Sie unter Namespace-Name einen eindeutigen Namen für den Namespace ein.

  5. Geben Sie für Speicherort den Pfad an, der Ihrem Namespace zugeordnet werden soll:

    • Multi-Bucket (bl://) (empfohlen): Sie können einen beliebigen benutzerdefinierten Standort festlegen, sofern er sich an einem Standort befindet, der vom Katalog zugelassen ist (default_location oder restricted_locations). Wenn Sie keinen Standort angeben, wird der Namespace am Standardspeicherort des Katalogs erstellt (z. B. gs://{path-to-default-location}/{namespace_name}). Multi-Bucket-Kataloge (bl://) (empfohlen) können nicht in der Konsole verwaltet werden.
    • Einzelner Bucket (gs://): Der Namespace-Speicherort wird automatisch vom einzelnen Bucket des Katalogs übernommen.
  6. Klicken Sie auf 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 mit dem Apache Iceberg-REST-Katalogendpunkt.
  • SCHEMA_NAME: Ein Name für Ihr Schema.

Katalog aktualisieren

Wenn Sie einen vorhandenen Katalog mit einem Bucket (gs://) haben, können Sie ihn auf den Katalogtyp mit mehreren Buckets (bl://) aktualisieren (empfohlen). Durch das Upgrade können Sie mehrere Buckets verknüpfen und eingeschränkte Standorte konfigurieren, wobei der ursprüngliche Katalognamen beibehalten wird.

Informationen zum Aktualisieren Ihres Katalogs finden Sie unter Katalog aktualisieren.

Nächste Schritte