Iceberg-Ressourcen im BigLake Metastore verwalten
BigLake Metastore ist ein einzelner, gemeinsam genutzter Metastore, der die gemeinsame Nutzung von Daten über Datenverarbeitungs-Engines hinweg ermöglicht. So müssen Sie keine separaten Metastores für Ihre Open-Source-Arbeitslasten verwalten.
In diesem Dokument wird beschrieben, wie Sie Iceberg-Ressourcen in BigLake Metastore erstellen, ansehen, ändern und löschen.
Hinweise
-
Make sure that billing is enabled for your Google Cloud project.
So prüfen Sie, ob die Abrechnung für ein Projekt aktiviert ist. -
Enable the BigQuery, BigQuery Storage, and Dataproc APIs.
- Optional: Funktionsweise von BigLake Metastore und Gründe für die Verwendung
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für das Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Verwalten von Iceberg-Ressourcen im BigLake-Metastore benötigen:
-
BigQuery Data Editor (
roles/bigquery.dataEditor
) -
Storage-Objekt-Administrator (
roles/storage.objectAdmin
)
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.
Metastore-Ressourcen erstellen
In den folgenden Abschnitten wird beschrieben, wie Sie Ressourcen im BigLake-Metastore erstellen.
Namespaces erstellen
Wählen Sie eine der folgenden Optionen aus:
API
Verwenden Sie die Methode datasets.insert
und geben Sie das Feld ExternalCatalogDatasetOptions
in der Dataset-Ressource an, die Sie übergeben.
{ "datasetReference": { "projectId": "PROJECT_ID", "datasetId": "DATASET_ID" }, "externalCatalogDatasetOptions": { "defaultStorageLocationUri": "URI", "parameters": { ... } }, "location": "LOCATION" }
Ersetzen Sie Folgendes:
PROJECT_ID
: die ID des Projekts, das Ihr Ziel-Dataset enthältDATASET_ID
: die ID Ihres Ziel-DatasetsURI
: Der Cloud Storage-URI für alle Tabellen im Dataset.LOCATION
: der BigQuery-Standort, an dem Sie das Dataset erstellen möchten
Spark SQL
CREATE NAMESPACE SPARK_CATALOG.NAMESPACE;
Ersetzen Sie Folgendes:
SPARK_CATALOG
: der Name Ihres Spark-KatalogsNAMESPACE
: der Name des neuen Namespace
Terraform
provider "google" { project = "PROJECT_ID" } resource "google_bigquery_dataset" "default" { dataset_id = "DATASET_ID" location = "LOCATION" external_catalog_dataset_options { default_storage_location_uri = "URI" parameters = { ... } } }
Ersetzen Sie Folgendes:
PROJECT_ID
: die ID des Projekts, das Ihr Ziel-Dataset enthältDATASET_ID
: die ID Ihres Ziel-DatasetsLOCATION
: der BigQuery-Standort, an dem Sie das Dataset erstellen möchtenURI
: Der Cloud Storage-URI für alle Tabellen im Dataset.
Iceberg-Tabellen erstellen
Wählen Sie eine der folgenden Optionen aus:
API
Verwenden Sie die Methode tables.insert
und geben Sie das Feld ExternalCatalogTableOptions
in der Tabellenressource an, die Sie übergeben.
{ "tableReference": { "projectId": "PROJECT_ID", "datasetId": "DATASET_ID", "tableId": "TABLE_ID" }, "externalCatalogTableOptions": { "parameters": { "table_type": "iceberg", "metadata_location": "METADATA_URI" }, "connection_id": "CONNECTION_ID" } }
Ersetzen Sie Folgendes:
PROJECT_ID
: Die ID des Projekts, das Ihre Zieltabelle enthält.DATASET_ID
: die ID des Datasets, das Ihre Zieltabelle enthält.TABLE_ID
: Die ID Ihrer Zieltabelle.METADATA_URI
: Der Cloud Storage-URI für die aktuelle Iceberg-Metadatendatei. Beispiel:gs://mybucket/mytable/metadata/1234.metadata.json
.CONNECTION_ID
: die ID Ihrer Verbindung zu Cloud Storage.
Spark SQL
CREATE TABLE SPARK_CATALOG.NAMESPACE.TABLE (id bigint, data string) USING iceberg;
Ersetzen Sie Folgendes:
SPARK_CATALOG
: der Name Ihres Spark-KatalogsNAMESPACE
ist der Name Ihres NamespaceTABLE
: Name der neuen Tabelle
Terraform
resource "google_bigquery_table" "default" { deletion_protection = false dataset_id = google_bigquery_dataset.default.dataset_id table_id = "TABLE" external_catalog_table_options { storage_descriptor { location_uri = "STORAGE_URI" input_format = "org.apache.hadoop.mapred.FileInputFormat" output_format = "org.apache.hadoop.mapred.FileOutputFormat" } parameters = { "table_type" = "iceberg" "metadata_location" = "METADATA_URI" "write.parquet.compression-codec" : "zstd" "EXTERNAL" : "TRUE" } } }
Ersetzen Sie Folgendes:
TABLE
: der Name der Zieltabelle.STORAGE_URI
: Der Cloud Storage-URI, unter dem die Tabellendaten gespeichert sind, beginnend mitgs://
.METADATA_URI
: Der Cloud Storage-URI für die aktuelle Iceberg-Metadatendatei. Beispiel:gs://mybucket/mytable/metadata/1234.metadata.json
.
Metastore-Ressourcen aufrufen
In den folgenden Abschnitten wird beschrieben, wie Sie Ressourcen im BigLake-Metastore ansehen.
Namespaces ansehen
Wählen Sie eine der folgenden Optionen aus:
API
Mit der Methode datasets.list
können Sie alle Namespaces aufrufen. Mit der Methode datasets.get
können Sie Informationen zu einem definierten Namespace aufrufen.
Spark SQL
Verwenden Sie die folgende Anweisung, um alle Namespaces in einem Katalog aufzurufen:
SHOW { DATABASES | NAMESPACES } IN SPARK_CATALOG;
Ersetzen Sie SPARK_CATALOG
durch den Namen Ihres Spark-Katalogs.
Verwenden Sie die folgende Anweisung, um Informationen zu einem definierten Namespace aufzurufen:
DESCRIBE { DATABASE | NAMESPACE } [EXTENDED] SPARK_CATALOG.NAMESPACE;
Ersetzen Sie Folgendes:
SPARK_CATALOG
: der Name Ihres Spark-KatalogsNAMESPACE
ist der Name Ihres Namespace
Tabellen anzeigen
Wählen Sie eine der folgenden Optionen aus:
API
Mit der Methode tables.list
können Sie alle Tabellen in einem Namespace aufrufen. Mit der Methode tables.get
können Sie Informationen zu einer bestimmten Tabelle aufrufen.
Spark SQL
Mit der folgenden Anweisung können Sie alle Tabellen in einem Namespace aufrufen:
SHOW TABLES IN SPARK_CATALOG.NAMESPACE;
Ersetzen Sie Folgendes:
SPARK_CATALOG
: der Name Ihres Spark-KatalogsNAMESPACE
ist der Name Ihres Namespace
Mit der folgenden Anweisung können Sie Informationen zu einer definierten Tabelle aufrufen:
DESCRIBE TABLE [EXTENDED] SPARK_CATALOG.NAMESPACE.TABLE;
Ersetzen Sie Folgendes:
SPARK_CATALOG
: der Name Ihres Spark-KatalogsNAMESPACE
ist der Name Ihres NamespaceTABLE
: Name Ihrer Tabelle
Metastore-Ressourcen ändern
In den folgenden Abschnitten wird beschrieben, wie Sie Ressourcen im BigLake-Metastore ändern.
Namespaces aktualisieren
Wählen Sie eine der folgenden Optionen aus:
API
Verwenden Sie die datasets.patch
-Methode und aktualisieren Sie das ExternalCatalogDatasetOptions
-Feld in der Dataset-Ressource. Die Methode datasets.update
wird nicht empfohlen, da sie die gesamte Dataset-Ressource ersetzt.
Spark SQL
Verwenden Sie die Anweisung ALTER DATABASE
.
Iceberg-Tabellen aktualisieren
Wählen Sie eine der folgenden Optionen aus:
API
Verwenden Sie die tables.patch
-Methode und aktualisieren Sie das ExternalCatalogTableOptions
-Feld in der Tabellenressource. Die Methode tables.update
wird nicht empfohlen, da sie die gesamte Tabellenressource ersetzt.
Wenn Sie das Schema oder die Metadatendatei aktualisieren möchten, verwenden Sie die Methode tables.patch
und setzen Sie das Attribut autodetect_schema
auf „true“:
PATCH https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID?autodetect_schema=true
Ersetzen Sie Folgendes:
PROJECT_ID
: die ID des Projekts mit der Tabelle, die Sie aktualisieren möchtenDATASET_ID
: die ID des Datasets, das die Tabelle enthält, die Sie aktualisieren möchtenTABLE_ID
: Die ID der Tabelle, die Sie aktualisieren möchten
Geben Sie im Anfragetext den aktualisierten Wert für jedes Feld an. Wenn Sie beispielsweise den Metadatenspeicherort der Iceberg-Tabelle aktualisieren möchten, geben Sie den aktualisierten Wert für das Feld metadata_location
an:
{ "externalCatalogTableOptions": { "parameters": {"metadata_location": "METADATA_URI"} }, "schema": null }'
Ersetzen Sie METADATA_URI
durch den Cloud Storage-URI für die neueste Iceberg-Metadatendatei. Beispiel: gs://mybucket/mytable/metadata/1234.metadata.json
.
Spark SQL
Verwenden Sie die Anweisung ALTER TABLE
.
Metastore-Ressourcen löschen
In den folgenden Abschnitten wird beschrieben, wie Sie Ressourcen im BigLake-Metastore löschen.
Namespaces löschen
Wählen Sie eine der folgenden Optionen aus:
API
Verwenden Sie die Methode datasets.delete
:
Setzen Sie den Parameter deleteContents
auf „true“, um die Tabellen in Ihrem Namespace zu löschen.
Spark SQL
DROP NAMESPACE SPARK_CATALOG.NAMESPACE;
Ersetzen Sie Folgendes:
SPARK_CATALOG
: der Name Ihres Spark-KatalogsNAMESPACE
ist der Name Ihres Namespace
Tabellen löschen
Wählen Sie eine der folgenden Optionen aus:
API
Verwenden Sie die tables.delete
-Methode und geben Sie den Namen der Tabelle an. Mit dieser Methode werden die zugehörigen Dateien in Cloud Storage nicht gelöscht.
Spark SQL
Wenn Sie nur die Tabelle löschen möchten, verwenden Sie die folgende Anweisung:
DROP TABLE SPARK_CATALOG.NAMESPACE.TABLE;
Ersetzen Sie Folgendes:
SPARK_CATALOG
: der Name Ihres Spark-KatalogsNAMESPACE
ist der Name Ihres NamespaceTABLE
: Der Name der zu löschenden Tabelle.
Verwenden Sie die folgende Anweisung, um die Tabelle zu löschen und die zugehörigen Dateien in Cloud Storage zu entfernen:
DROP TABLE SPARK_CATALOG.NAMESPACE.TABLE PURGE;
Ersetzen Sie Folgendes:
SPARK_CATALOG
: der Name Ihres Spark-KatalogsNAMESPACE
ist der Name Ihres NamespaceTABLE
: Der Name der zu löschenden Tabelle.