Lakehouse für Apache Iceberg unterstützt die Ressourcenverwaltung über den Lakehouse-Laufzeitkatalog.
Mit diesem freigegebenen Katalog müssen nicht mehrere Kataloge für Open-Source-Arbeitslasten in verschiedenen Datenverarbeitungs-Engines verwaltet werden. Zu den unterstützten Vorgängen gehören das Erstellen, Aufrufen, Ändern und Löschen von Ressourcen wie Namespaces und Tabellen.
Hinweis
-
Prüfen Sie, ob für Ihr Google Cloud Projekt die Abrechnung aktiviert ist.
-
Aktivieren Sie die BigQuery API, die BigQuery Storage API und die Managed Service for Apache Spark API.
Erforderliche Rollen zum Aktivieren von APIs
Zum Aktivieren von APIs benötigen Sie die IAM-Rolle „Service Usage-Administrator“ (
roles/serviceusage.serviceUsageAdmin), die die Berechtigungserviceusage.services.enableenthält. Informationen zum Zuweisen von Rollen.
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 Apache Iceberg-Ressourcen im Lakehouse-Laufzeitkatalog benötigen:
- BigQuery-Datenbearbeiter (
roles/bigquery.dataEditor) - Storage Object User (
roles/storage.objectUser)
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.
Katalogressourcen erstellen
In den folgenden Abschnitten wird beschrieben, wie Sie Ressourcen im Lakehouse-Laufzeitkatalog erstellen.
Namespaces erstellen
Wählen Sie eine der folgenden Optionen aus:
API
Verwenden Sie die
datasets.insert Methode,
und geben Sie das
ExternalCatalogDatasetOptions Feld
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ält.DATASET_ID: Die ID Ihres Ziel-Datasets.URI: Der Cloud Storage-URI für alle Tabellen im Dataset.LOCATION: Der BigQuery-Standort, an dem Sie das Dataset erstellen möchten.
Apache Spark SQL
CREATE NAMESPACE SPARK_CATALOG.NAMESPACE;
Ersetzen Sie Folgendes:
SPARK_CATALOG: Der Name Ihres Apache Spark-Katalogs.NAMESPACE: Der Name Ihres 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ält.DATASET_ID: Die ID Ihres Ziel-Datasets.LOCATION: Der BigQuery-Standort, an dem Sie das Dataset erstellen möchten.URI: Der Cloud Storage-URI für alle Tabellen im Dataset.
Apache Iceberg-Tabellen erstellen
Wählen Sie eine der folgenden Optionen aus:
API
Verwenden Sie die
tables.insert Methode,
und geben Sie das
ExternalCatalogTableOptions Feld
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 Ziel-Tabelle enthält.DATASET_ID: Die ID des Datasets, das Ihre Ziel-Tabelle enthält.TABLE_ID: Die ID Ihrer Ziel-Tabelle.METADATA_URI: Der Cloud Storage-URI für die neueste Apache Iceberg-Metadatendatei. Beispiel:gs://mybucket/mytable/metadata/1234.metadata.json.CONNECTION_ID: Die ID Ihrer Verbindung zu Cloud Storage.
Apache Spark SQL
CREATE TABLE SPARK_CATALOG.NAMESPACE.TABLE (id bigint, data string) USING iceberg;
Ersetzen Sie Folgendes:
SPARK_CATALOG: Der Name Ihres Apache Spark-Katalogs.NAMESPACE: Der Name Ihres Namespace.TABLE: Der Name Ihrer 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 Ziel-Tabelle.STORAGE_URI: Der Cloud Storage-URI, unter dem die Tabellendaten gespeichert sind, beginnend mitgs://.METADATA_URI: Der Cloud Storage-URI für die neueste Apache Iceberg-Metadatendatei. Beispiel:gs://mybucket/mytable/metadata/1234.metadata.json.
Katalogressourcen aufrufen
In den folgenden Abschnitten wird beschrieben, wie Sie Ressourcen im Lakehouse-Laufzeitkatalog aufrufen.
Namespaces aufrufen
Wählen Sie eine der folgenden Optionen aus:
API
Verwenden Sie die
datasets.list Methode
um alle Namespaces aufzurufen, oder verwenden Sie die
datasets.get Methode
um Informationen zu einem definierten Namespace aufzurufen.
Apache 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 Apache 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 Apache Spark-Katalogs.NAMESPACE: Der Name Ihres Namespace.
Tabellen aufrufen
Wählen Sie eine der folgenden Optionen aus:
API
Verwenden Sie die
tables.list Methode
um alle Tabellen in einem Namespace aufzurufen, oder verwenden Sie die
tables.get Methode
um Informationen zu einer definierten Tabelle aufzurufen.
Apache Spark SQL
Verwenden Sie die folgende Anweisung, um alle Tabellen in einem Namespace aufzurufen:
SHOW TABLES IN SPARK_CATALOG.NAMESPACE;
Ersetzen Sie Folgendes:
SPARK_CATALOG: Der Name Ihres Apache Spark-Katalogs.NAMESPACE: Der Name Ihres Namespace.
Verwenden Sie die folgende Anweisung, um Informationen zu einer definierten Tabelle aufzurufen:
DESCRIBE TABLE [EXTENDED] SPARK_CATALOG.NAMESPACE.TABLE;
Ersetzen Sie Folgendes:
SPARK_CATALOG: Der Name Ihres Apache Spark-Katalogs.NAMESPACE: Der Name Ihres Namespace.TABLE: Der Name Ihrer Tabelle.
Katalogressourcen ändern
In den folgenden Abschnitten wird beschrieben, wie Sie Ressourcen im Lakehouse-Laufzeitkatalog ä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.
Apache Spark SQL
Verwenden Sie die
ALTER DATABASE Anweisung.
Apache 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.
Verwenden Sie die Methode tables.patch und legen Sie das Attribut autodetect_schema auf „true“ fest, um das Schema oder die Metadatendatei zu aktualisieren:
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, das die Tabelle enthält, die Sie aktualisieren möchten.DATASET_ID: Die ID des Datasets, das die Tabelle enthält, die Sie aktualisieren möchten.TABLE_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 Metadatenstandort der Apache 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 Apache Iceberg-Metadatendatei. Beispiel: gs://mybucket/mytable/metadata/1234.metadata.json.
Apache Spark SQL
Verwenden Sie die
ALTER TABLE Anweisung.
Katalogressourcen löschen
In den folgenden Abschnitten wird beschrieben, wie Sie Ressourcen im Lakehouse-Laufzeitkatalog löschen.
Namespaces löschen
Wählen Sie eine der folgenden Optionen aus:
API
Verwenden Sie die
datasets.delete Methode.
Legen Sie den Parameter deleteContents auf „true“ fest, um die Tabellen in Ihrem Namespace zu löschen.
Apache Spark SQL
DROP NAMESPACE SPARK_CATALOG.NAMESPACE;
Ersetzen Sie Folgendes:
SPARK_CATALOG: Der Name Ihres Apache Spark-Katalogs.NAMESPACE: 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.
Apache Spark SQL
Verwenden Sie die folgende Anweisung, um nur die Tabelle zu löschen:
DROP TABLE SPARK_CATALOG.NAMESPACE.TABLE;
Ersetzen Sie Folgendes:
SPARK_CATALOG: Der Name Ihres Apache Spark-Katalogs.NAMESPACE: Der Name Ihres Namespace.TABLE: 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 löschen:
DROP TABLE SPARK_CATALOG.NAMESPACE.TABLE PURGE;
Ersetzen Sie Folgendes:
SPARK_CATALOG: Der Name Ihres Apache Spark-Katalogs.NAMESPACE: Der Name Ihres Namespace.TABLE: Der Name der zu löschenden Tabelle.
Nächste Schritte
- Weitere Informationen zu zusätzlichen Funktionen des Lakehouse-Laufzeitkatalogs.