Auf Iceberg-Daten aus AlloyDB zugreifen

Mit dem direkten Iceberg-Zugriff in AlloyDB for PostgreSQL können Sie Daten, die im Apache Iceberg-Tabellenformat in Cloud Storage gespeichert sind, von Ihrer AlloyDB-Instanz aus abfragen. Sie können auf Iceberg-Datasets über Cloud Storage-Bucket-URIs oder über den Lakehouse-Laufzeitkatalog zugreifen. Zur Beschleunigung analytischer Arbeitslasten bietet AlloyDB eine integrierte spaltenbasierte Engine, die Scans, Joins und Aggregationen optimiert. Durch die Integration in die spaltenbasierte Engine können Sie mit dem direkten Iceberg-Zugriff leistungsstarke analytische Abfragen für Ihr Data Lakehouse ausführen, ohne komplexe ETL-Datenpipelines (Extrahieren, Transformieren und Laden) erstellen, verwalten oder warten zu müssen.

Sie können Iceberg-Tabellen mit Standard-SQL-Befehlen abfragen, Iceberg-Datasets mit operativen Tabellen in AlloyDB verknüpfen und Iceberg-Tabellen in die speicherinterne spaltenbasierte Engine einfügen, um die Abfrageleistung zu beschleunigen.

Vorteile

Der direkte Iceberg-Zugriff bietet folgende Vorteile:

  • Zero-ETL-Lakehouse-Zugriff: Externe Iceberg-Datasets können direkt abgefragt werden, ohne dass Daten in separate Analysesysteme kopiert oder verschoben werden müssen.
  • Einheitliche transaktionale und analytische Abfragen: Verknüpfen Sie Live-Betriebsdaten, die in AlloyDB-Heap-Tabellen gespeichert sind, mit umfangreichen Verlaufsdaten, die in Iceberg-Tabellen in Cloud Storage gespeichert sind.
  • Flexible Katalogintegration: Greifen Sie über Cloud Storage-Bucket-Pfade oder den Lakehouse-Laufzeitkatalog auf Iceberg-Tabellenmetadaten zu.
  • Spaltenbasierte Abfragebeschleunigung: Iceberg-Tabellen werden im Speicher der spaltenbasierten Engine von AlloyDB im Cache gespeichert und mit Daten gefüllt, um analytische Verarbeitungen in weniger als einer Sekunde zu ermöglichen.
  • Standard-SQL-Schnittstelle: Verwenden Sie die vertraute PostgreSQL-Syntax, um Iceberg-Tabellen abzufragen und zu analysieren.

So funktioniert der direkte Iceberg-Zugriff

Der direkte Iceberg-Zugriff verwendet die PostgreSQL-Schnittstelle für den Tabellenzugriff (TAM) (USING iceberg) und ist in den Planer und das Ausführungsframework der spaltenorientierten AlloyDB-Engine eingebunden.

Wenn Sie eine Iceberg-Tabelle abfragen, wird AlloyDB in einem der folgenden Modi ausgeführt:

  • Direkter Scan (für Streaming-Lesevorgänge): AlloyDB liest die neuesten Metadaten und Datendateien direkt aus Cloud Storage. Die spaltenbasierte Engine verarbeitet die Daten im Streaming-Verfahren.
  • Beschleunigung der spaltenbasierten Engine (für im Speicher zwischengespeicherte Lesevorgänge): Wenn Sie eine Iceberg-Tabelle mit der Funktion google_columnar_engine_add() in die spaltenbasierte AlloyDB-Engine einfügen, wird die Tabelle in den spaltenbasierten Speicher im Arbeitsspeicher geladen. Nachfolgende Abfragen werden aus dem Speicher der spaltenorientierten Engine gelesen, wodurch der Abfragedurchsatz maximiert und die Latenz minimiert wird.

Snapshot-Bereitstellung und Cache-Aktualisierung

Der Iceberg-Tabellen-Snapshot, den AlloyDB abfragt, hängt vom Lesemodus ab:

  • Direkter Scan: AlloyDB führt Abfragen für den neuesten Iceberg-Snapshot aus. Wenn eine Abfrage gestartet wird, ermittelt AlloyDB den neuesten verfügbaren Iceberg-Tabellen-Snapshot und liest Daten aus diesem Snapshot, auch innerhalb einer REPEATABLE READ- oder SERIALIZABLE-Transaktion. AlloyDB unterstützt kein Snapshot-Pinning und keine Point-in-Time-Abfragen über Transaktionen hinweg.

    Wenn Sie beispielsweise eine Tabelle mit einem direkten Scan abfragen, liest jede Anweisung in einer Transaktion aus dem neuesten verfügbaren Snapshot:

    BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE;
    SELECT * FROM customer_orders;
    -- If an external process commits a new Iceberg snapshot:
    SELECT * FROM customer_orders; -- Returns results from the new snapshot.
    COMMIT;
    
  • Beschleunigung der spaltenbasierten Engine: AlloyDB führt Abfragen für den Snapshot aus, der in der spaltenbasierten Engine ausgefüllt wird. Wenn AlloyDB nach dem Befüllen neue Daten in die zugrunde liegende Iceberg-Tabelle in Cloud Storage schreibt, geben Abfragen möglicherweise veraltete Daten zurück. Wenn Sie nach DML-Vorgängen in der zugrunde liegenden Tabelle aktuelle Daten abrufen möchten, aktualisieren Sie den Cache mit der Funktion google_columnar_engine_refresh().

Unterstützte Datentypen

Wenn Sie eine Iceberg-Tabelle in AlloyDB definieren, müssen die Spaltennamen und Datentypen in Ihrer DDL-Anweisung mit den Typen im zugrunde liegenden Iceberg-Schema übereinstimmen.

Der direkte Iceberg-Zugriff unterstützt die folgenden Apache Iceberg-Datentypen und die entsprechenden AlloyDB-Typen:

Apache Iceberg-Datentyp AlloyDB-Datentyp Beschreibung
boolean BOOLEAN Vektorisierte Konvertierung in ein Byte-gepacktes Format
int INT/INTEGER Vorzeichenbehaftete 32-Bit-Ganzzahl
long BIGINT Vorzeichenbehaftete 64-Bit-Ganzzahl
float REAL/FLOAT4 32-Bit-Gleitkommazahl mit einfacher Genauigkeit
double DOUBLE PRECISION/FLOAT8 64-Bit-Gleitkommazahl mit doppelter Genauigkeit
decimal(P, S) NUMERIC(P, S)/DECIMAL(P, S) Numerischer Festkommawert mit der Genauigkeit P und der Skalierung S
string TEXT/VARCHAR UTF-8-Stringwerte
date DATE Kalenderdatum (Jahr, Monat, Tag)
timestamp TIMESTAMP Zeitstempel ohne Zeitzone
timestamptz TIMESTAMPTZ Zeitstempel mit Zeitzone

Beschränkungen

Für den direkten Iceberg-Zugriff gelten die folgenden Einschränkungen:

  • Verfügbarkeit von PostgreSQL-Versionen: AlloyDB unterstützt den direkten Iceberg-Zugriff auf PostgreSQL 18 und höher.
  • Nutzerberechtigungen: Nur Datenbanknutzer mit der Rolle alloydbsuperuser können Iceberg-Tabellen erstellen. Nachdem eine Tabelle erstellt wurde, können Sie anderen Nutzern SELECT-Berechtigungen zum Abfragen der Iceberg-Tabelle gewähren.
  • Schreibgeschützte Vorgänge: AlloyDB unterstützt nur SELECT-Abfragen (DQL) für Iceberg-Tabellen. Schreibvorgänge (INSERT, UPDATE, DELETE, TRUNCATE) werden nicht unterstützt.
  • Apache Iceberg-Spezifikationsversion: AlloyDB unterstützt keine Iceberg v2-Löschdateien (positions- und gleichheitsbasierte Löschvorgänge) oder Iceberg v3-Löschvektoren.
  • Unterstützte Dateiformate: Der direkte Iceberg-Zugriff unterstützt Parquet-Datendateien sowie JSON- und Avro-Metadatendateien. ORC-Datendateien werden nicht unterstützt.
  • Snapshot-Versionsverwaltung: Direkte Scanabfragen werden für den neuesten Iceberg-Tabellen-Snapshot ausgeführt und spaltenbeschleunigte Abfragen für den ausgefüllten Snapshot. AlloyDB unterstützt keine Point-in-Time-Abfragen.
  • Schemaentwicklung: AlloyDB unterstützt keine ALTER TABLE-Vorgänge für Iceberg-Tabellen. Für die zugrunde liegende Iceberg-Tabelle darf keine Schemamigration durchgeführt worden sein.
  • Unterstützung für Metadatenkataloge: Der direkte Iceberg-Zugriff unterstützt direkte Cloud Storage-Bucket-Pfade (gs://) und Lakehouse-Laufzeitkatalogpfade (bl://). Für den Lakehouse-Laufzeitkatalog unterstützt AlloyDB nur den Modus für Endnutzeranmeldedaten. Der Modus für die Bereitstellung von Anmeldedaten oder andere REST-Kataloge werden nicht unterstützt.
  • „Anfragender bezahlt“-Buckets: AlloyDB unterstützt keine Cloud Storage-Buckets, für die Anfragender bezahlt aktiviert ist.
  • Einschränkung für vollständige Befüllung: AlloyDB unterstützt keine teilweise spaltenbasierte Befüllung für Iceberg-Tabellen. Tabellen müssen in den Speicher der spaltenorientierten Engine oder den SSD-Speicherplatz passen.
  • Heap-Speicher für die Population: Das Befüllen einer Iceberg-Tabelle, die große Parquet-Zeilengruppen enthält, kann das Heap-Speicherlimit für die Population pro Worker überschreiten, insbesondere bei Instanzen mit weniger vCPUs. Informationen zum Beheben dieses Problems finden Sie unter Heap für die Befüllung der spaltenorientierten Engine ist voll.

Hinweis

Bevor Sie Iceberg-Tabellen erstellen und abfragen, müssen Sie Folgendes tun:

  1. Erstellen Sie einen AlloyDB-Cluster mit PostgreSQL 18 oder höher in Google Cloud. Weitere Informationen finden Sie unter Cluster erstellen.
  2. Hosten Sie eine Apache Iceberg-Tabelle in Cloud Storage oder registrieren Sie sie im Lakehouse-Laufzeitkatalog:
    • Bei Cloud Storage-Pfaden muss die Bucket-Verzeichnisstruktur dem Standardlayout von Apache Iceberg entsprechen und die Unterverzeichnisse data/ und metadata/ enthalten, einschließlich JSON-Metadatendateien und version-hint.text. Weitere Informationen finden Sie unter Bucket erstellen.
    • Erstellen und registrieren Sie für den Lakehouse-Laufzeitkatalog Ihren Iceberg-Katalog im Modus für Endnutzer-Anmeldedaten. Weitere Informationen finden Sie unter Apache Iceberg REST-Katalogendpunkt einrichten.
  3. Richten Sie Datenbankanmeldedaten für einen Nutzer mit der Rolle alloydbsuperuser ein. Weitere Informationen finden Sie unter Gruppenrolle alloydbsuperuser.

Erforderliche Rollen

Damit AlloyDB Iceberg-Daten und -Metadaten lesen kann, müssen Sie dem AlloyDB-Clusterdienstkonto die erforderlichen IAM-Rollen zuweisen:

  • Cloud Storage-Zugriff: Gewähren Sie die Rolle „Storage-Objekt-Betrachter“ (roles/storage.objectViewer) für den Cloud Storage-Bucket, der Ihre Iceberg-Daten und ‑Metadaten enthält.
  • BigLake-Zugriff (bei Verwendung des Lakehouse-Laufzeitkatalogs): Gewähren Sie die Rolle „BigLake-Betrachter“ (roles/biglake.viewer) für das Projekt, in dem Ihr BigLake-Katalog gehostet wird.

Führen Sie den Befehl gcloud beta alloydb clusters describe aus, um das Clusterdienstkonto zu finden:

gcloud beta alloydb clusters describe CLUSTER_ID --region=REGION_ID

Ersetzen Sie Folgendes:

  • CLUSTER_ID: die AlloyDB-Cluster-ID.
  • REGION_ID: der Standort des AlloyDB-Clusters. Beispiel: us-east1. Eine vollständige Liste der Regionen finden Sie unter AlloyDB-Standorte.

Die Ausgabe enthält das Feld serviceAccountEmail, das das Dienstkonto für diesen Cluster ist. In der Google Cloud Console finden Sie das Dienstkonto auf der Seite Clusterübersicht.

Führen Sie den folgenden Befehl aus, um die Rolle „Storage-Objekt-Betrachter“ mit der gcloud CLI zuzuweisen:

gcloud storage buckets add-iam-policy-binding \
    gs://BUCKET_NAME \
    --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
    --role="roles/storage.objectViewer"

Wenn Sie den Lakehouse-Laufzeitkatalog verwenden, weisen Sie die Rolle „BigLake-Betrachter“ zu:

gcloud projects add-iam-policy-binding LAKEHOUSE_PROJECT_ID \
    --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
    --role="roles/biglake.viewer"

Ersetzen Sie Folgendes:

  • BUCKET_NAME: Der Name Ihres Cloud Storage-Buckets.
  • LAKEHOUSE_PROJECT_ID: die Google Cloud Projekt-ID, in der Ihr Lakehouse-Laufzeitkatalog gehostet wird.
  • SERVICE_ACCOUNT_EMAIL: die E-Mail-Adresse des Clusterdienstkontos, die Sie im Feld serviceAccountEmail gefunden haben.

Datenbank-Flags konfigurieren

Wenn Sie die spaltenbasierte Engine und den direkten Iceberg-Zugriff aktivieren möchten, können Sie Datenbank-Flags für Ihre AlloyDB-Instanz konfigurieren. Legen Sie die folgenden Datenbank-Flags für Ihre Instanz fest:

Datenbank-Flag Wert Beschreibung
google_columnar_engine.enabled on Aktiviert die spaltenbasierte Engine von AlloyDB.
google_columnar_engine.enable_iceberg_reads on Ermöglicht den direkten Iceberg-Zugriff. Erfordert einen Instanzneustart.
google_columnar_engine.memory_size_in_mb SIZE_IN_MB (Optional) Weist der spaltenbasierten Engine Arbeitsspeicher zu. Empfohlen, wenn Sie Iceberg-Tabellen im Arbeitsspeicher füllen möchten.

Führen Sie den Befehl gcloud alloydb instances update aus, um diese Flags mit der gcloud CLI zu konfigurieren:

gcloud alloydb instances update INSTANCE_ID \
    --cluster=CLUSTER_ID \
    --region=REGION_ID \
    --database-flags=google_columnar_engine.enabled=on,google_columnar_engine.enable_iceberg_reads=on

Ersetzen Sie Folgendes:

  • INSTANCE_ID: die ID Ihrer AlloyDB-Instanz.
  • CLUSTER_ID: die ID Ihres AlloyDB-Clusters.
  • REGION_ID: die Regions-ID Ihres AlloyDB-Clusters.

Iceberg-Tabelle in AlloyDB erstellen

Wenn Sie ein Apache Iceberg-Dataset in AlloyDB freigeben möchten, stellen Sie eine Verbindung als Nutzer mit alloydbsuperuser-Berechtigungen her. Erstellen Sie dann eine Tabelle mit der Tabellenzugriffsmethode USING iceberg.

CREATE TABLE TABLE_NAME (
    COLUMN_NAME DATA_TYPE [, ...]
)
USING iceberg
WITH (
    uri = 'LOCATION_URI'
);

Ersetzen Sie Folgendes:

  • TABLE_NAME: Der Name der Tabelle, die in AlloyDB erstellt werden soll.
  • COLUMN_NAME und DATA_TYPE: die Spaltendefinitionen. Spaltennamen und -typen müssen mit dem Schema der zugrunde liegenden Iceberg-Tabelle übereinstimmen.
  • LOCATION_URI: der Speicherort der Iceberg-Tabellenmetadaten. Geben Sie eines der folgenden Formate an:
    • Direkter Cloud Storage-Pfad: gs://BUCKET_NAME/PATH_TO_ICEBERG_TABLE
    • URI des Lakehouse-Laufzeitkatalogs: bl://projects/PROJECT_ID/catalogs/CATALOG_NAME/databases/DATABASE_NAME/tables/TABLE_NAME

Beispiele

In den folgenden Beispielen wird gezeigt, wie Sie Iceberg-Tabellen in AlloyDB erstellen.

Tabelle aus einem Cloud Storage-Pfad erstellen

Im folgenden Beispiel wird eine Tabelle mit dem Namen customer_orders erstellt, die auf einem Iceberg-Dataset in einem Cloud Storage-Bucket basiert:

CREATE TABLE customer_orders (
    order_id BIGINT,
    customer_id INT,
    order_status TEXT,
    total_amount DOUBLE PRECISION,
    order_date DATE,
    is_completed BOOLEAN
)
USING iceberg
WITH (
    uri = 'gs://my-iceberg-analytics-bucket/datasets/sales/customer_orders'
);

Tabelle aus dem Lakehouse-Laufzeitkatalog erstellen

Im folgenden Beispiel wird eine Tabelle erstellt, die auf eine Iceberg-Tabelle verweist, die vom Lakehouse-Laufzeitkatalog verwaltet wird:

CREATE TABLE customer_orders (
    order_id BIGINT,
    customer_id INT,
    order_status TEXT,
    total_amount DOUBLE PRECISION,
    order_date DATE,
    is_completed BOOLEAN
)
USING iceberg
WITH (
    uri = 'bl://projects/my-analytics-project/catalogs/sales_catalog/databases/retail_db/tables/customer_orders'
);

Iceberg-Daten abfragen

Nachdem Sie die Tabelle in AlloyDB erstellt haben, können Sie sie mit Standard-SQL-SELECT-Anweisungen mit alloydbsuperuser-Berechtigungen abfragen. Optional können Sie einem Nutzer ohne alloydbsuperuser-Berechtigungen mit der GRANT-Anweisung Leseberechtigungen gewähren. Beispiel: GRANT SELECT ON customer_orders TO normal_user.

Daten abfragen

Im folgenden Beispiel wird gezeigt, wie Sie eine Abfrage ausführen:

SELECT
    customer_id,
    COUNT(order_id) AS total_orders,
    SUM(total_amount) AS total_spent
FROM customer_orders
WHERE is_completed = true
  AND order_date >= '2026-01-01'
GROUP BY customer_id
ORDER BY total_spent DESC
LIMIT 10;

Iceberg-Daten mit Betriebsdaten abfragen

Sie können Echtzeit-Betriebsdaten in AlloyDB mit Verlaufsdaten in Iceberg kombinieren:

SELECT
    c.customer_name,
    c.account_tier,
    COUNT(o.order_id) AS total_orders,
    SUM(o.total_amount) AS historical_spend
FROM customer_orders o
JOIN customers c ON o.customer_id = c.customer_id
WHERE o.is_completed = true
GROUP BY c.customer_name, c.account_tier
ORDER BY historical_spend DESC;

Daten in eine lokale Tabelle importieren

Wenn Sie eine unabhängige, beschreibbare Kopie der Iceberg-Daten im lokalen AlloyDB-Speicher erstellen möchten, führen Sie CREATE TABLE ... AS SELECT aus, wie im folgenden Beispiel gezeigt:

CREATE TABLE local_customer_orders AS
SELECT * FROM customer_orders
WHERE order_date >= '2026-01-01';

Abfragen mit der spaltenbasierten Engine beschleunigen

Für analytische Arbeitslasten, die eine extrem niedrige Latenz erfordern, können Sie die Iceberg-Tabelle direkt in den Arbeitsspeicher der spaltenbasierten AlloyDB-Engine laden.

Iceberg-Tabelle in den spaltenbasierten Speicher füllen

Verwenden Sie die Funktion google_columnar_engine_add(), um alle Spalten einer Iceberg-Tabelle in die spaltenbasierte AlloyDB-Engine einzufügen. Beispiel:

SELECT google_columnar_engine_add('customer_orders');

Wenn Sie nur bestimmte Spalten füllen möchten, die von Ihren Abfragen verwendet werden, übergeben Sie eine durch Kommas getrennte Liste von Spaltennamen als zweites Argument. Beispiel:

SELECT google_columnar_engine_add('customer_orders', 'customer_id,order_status');

Weitere Informationen finden Sie unter Spalten mit SQL-Funktionen hinzufügen.

Eingefügte Daten aktualisieren

Wenn Sie neue Snapshots in das zugrunde liegende Iceberg-Dataset schreiben, aktualisieren Sie die Tabelle, um die neuesten Daten in die spaltenbasierte Engine zu laden, damit Abfragen aktuelle Ergebnisse zurückgeben:

SELECT google_columnar_engine_refresh('customer_orders');

Tabelle aus dem spaltenbasierten Speicher entfernen

So entfernen Sie eine Iceberg-Tabelle aus dem spaltenorientierten Speicher und kehren zum direkten Scannen zurück:

SELECT google_columnar_engine_drop('customer_orders');

Abfrageausführung überwachen und prüfen

Sie können überwachen, wie AlloyDB Abfragen für Iceberg-Tabellen ausführt, und prüfen, ob Abfragen die spaltenbasierte In-Memory-Engine verwenden. Verwenden Sie Systemansichten, um den Status der Cache-Befüllung zu prüfen, und EXPLAIN, um Abfrageausführungspläne zu untersuchen.

Status des spaltenbasierten Cachings prüfen

Wenn Sie prüfen möchten, ob eine Iceberg-Tabelle in der spaltenbasierten Engine ausgefüllt ist, fragen Sie die Systemansicht g_columnar_relations ab:

SELECT relation_name, status
FROM g_columnar_relations
WHERE relation_name = 'customer_orders';

Der status-Wert USABLE bestätigt, dass die Tabelle im Arbeitsspeicher der spaltenbasierten Engine im Cache gespeichert ist.

Abfrageausführungspläne mit EXPLAIN prüfen

Mit der Anweisung EXPLAIN können Sie prüfen, ob eine Abfrage die spaltenbasierte Engine nutzt:

EXPLAIN (ANALYZE, COSTS OFF)
SELECT SUM(total_amount)
FROM customer_orders
WHERE is_completed = true;

Die Ausgabe zeigt die spaltenbasierte Ausführung über einen Custom Scan (ColumnarScan)-Knoten in der Tabelle an:

Custom Scan (ColumnarScan) on customer_orders
  Filter: (is_completed = true)

Fehlerbehebung

In diesem Abschnitt wird beschrieben, wie Sie häufige Probleme beim Konfigurieren und Abfragen von Iceberg-Tabellen in AlloyDB beheben.

Das Flag google_columnar_engine.enable_iceberg_reads ist deaktiviert

Ursache: Das Datenbank-Flag für den direkten Iceberg-Zugriff ist deaktiviert.

Empfohlene Lösung: Legen Sie die Datenbank-Flags google_columnar_engine.enabled=on und google_columnar_engine.enable_iceberg_reads=on in Ihrer Instanz fest und starten Sie die Instanz neu.

Zugriff auf Cloud Storage verweigert

Ursache: Das AlloyDB-Clusterdienstkonto hat keinen Lesezugriff auf den Cloud Storage-Bucket.

Empfohlene Lösung: Weisen Sie dem Clusterdienstkonto für den Bucket die Rolle roles/storage.objectViewer zu.

Zugriff auf Lakehouse-Laufzeitkatalog verweigert

Ursache: Das AlloyDB-Clusterdienstkonto hat keinen Lesezugriff auf den Lakehouse-Laufzeitkatalog.

Empfohlene Lösung: Weisen Sie dem Clusterdienstkonto im Projekt Google Cloud , in dem der Lakehouse-Laufzeitkatalog gehostet wird, die Rolle roles/biglake.viewer zu.

Spaltenbasierte Datenübernahme schlägt fehl

Ursache: Die Iceberg-Tabelle ist größer als der verfügbare Arbeitsspeicher und SSD-Speicherplatz in der spaltenbasierten Engine.

Empfohlene Lösung: Erhöhen Sie die Arbeitsspeicherzuweisung für die spaltenbasierte Engine mit dem Flag google_columnar_engine.memory_size_in_mb auf Ihrer Instanz oder erhöhen Sie die Größe des Speichercaches der spaltenbasierten Engine mit dem Flag google_columnar_engine.storage_cache_size. Weitere Informationen finden Sie unter Speichercache für die spaltenbasierte Engine konfigurieren.

Der Heap für die Population der spaltenbasierten Engine ist voll

Fehlermeldung:

ERROR: Columnar engine population heap is full during population. Set
google_columnar_engine.population_heap_size_in_mb to a bigger value.

Ursache: Der zum Ausfüllen einer großen Parquet-Zeilengruppe erforderliche Arbeitsspeicher überschreitet das Heap-Limit pro Worker.

Empfohlene Lösung: Reduzieren Sie die Anzahl der parallelen Worker für die Population, damit der Populationsprozess einen größeren Heap verwenden kann. Legen Sie in der SQL-Sitzung, in der Sie die Tabelle füllen, das Flag google_job_scheduler.max_parallel_workers_per_job auf 0 fest, bevor Sie die Funktion google_columnar_engine_add() aufrufen:

SET google_job_scheduler.max_parallel_workers_per_job = 0;
SELECT google_columnar_engine_add('TABLE_NAME');

Ersetzen Sie TABLE_NAME durch den Namen der Iceberg-Tabelle in AlloyDB.

Nächste Schritte