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- oderSERIALIZABLE-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
alloydbsuperuserkönnen Iceberg-Tabellen erstellen. Nachdem eine Tabelle erstellt wurde, können Sie anderen NutzernSELECT-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:
- Erstellen Sie einen AlloyDB-Cluster mit PostgreSQL 18 oder höher in Google Cloud. Weitere Informationen finden Sie unter Cluster erstellen.
- 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/undmetadata/enthalten, einschließlich JSON-Metadatendateien undversion-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.
- Bei Cloud Storage-Pfaden muss die Bucket-Verzeichnisstruktur dem Standardlayout von Apache Iceberg entsprechen und die Unterverzeichnisse
- Richten Sie Datenbankanmeldedaten für einen Nutzer mit der Rolle
alloydbsuperuserein. Weitere Informationen finden Sie unter Gruppenrollealloydbsuperuser.
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_IDErsetzen 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 FeldserviceAccountEmailgefunden 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=onErsetzen 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_NAMEundDATA_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
- Direkter Cloud Storage-Pfad:
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
- Informationen zur spaltenbasierten Engine von AlloyDB
- Spaltenorientierte Engine konfigurieren
- Wählen Sie aus, wie Sie von AlloyDB auf BigQuery-Daten zugreifen möchten.