Gérer les ressources Iceberg dans BigLake Metastore
BigLake Metastore est un métastore unique et partagé qui permet le partage de données entre les moteurs de traitement des données. Il élimine la nécessité de gérer des métastores distincts pour vos charges de travail Open Source.
Ce document explique comment créer, afficher, modifier et supprimer des ressources Iceberg dans BigLake Metastore.
Avant de commencer
-
Make sure that billing is enabled for your Google Cloud project.
Découvrez comment vérifier si la facturation est activée sur un projet. -
Enable the BigQuery, BigQuery Storage, and Dataproc APIs.
- Facultatif : Découvrez le fonctionnement de BigLake Metastore et pourquoi vous devriez l'utiliser.
Rôles requis
Pour obtenir les autorisations nécessaires pour gérer les ressources Iceberg dans le métastore BigLake, demandez à votre administrateur de vous accorder les rôles IAM suivants sur votre projet :
-
Éditeur de données BigQuery (
roles/bigquery.dataEditor
) -
Administrateur des objets de l'espace de stockage (
roles/storage.objectAdmin
)
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.
Créer des ressources de metastore
Les sections suivantes décrivent comment créer des ressources dans le metastore BigLake.
Créer des espaces de noms
Sélectionnez l'une des options suivantes :
API
Utilisez la méthode datasets.insert
et spécifiez le champ ExternalCatalogDatasetOptions
dans la ressource d'ensemble de données que vous transmettez.
{ "datasetReference": { "projectId": "PROJECT_ID", "datasetId": "DATASET_ID" }, "externalCatalogDatasetOptions": { "defaultStorageLocationUri": "URI", "parameters": { ... } }, "location": "LOCATION" }
Remplacez les éléments suivants :
PROJECT_ID
: ID du projet contenant votre ensemble de données cibleDATASET_ID
: ID de votre ensemble de données cibleURI
: URI Cloud Storage pour toutes les tables de l'ensemble de donnéesLOCATION
: emplacement BigQuery dans lequel vous souhaitez créer l'ensemble de données.
Spark SQL
CREATE NAMESPACE SPARK_CATALOG.NAMESPACE;
Remplacez les éléments suivants :
SPARK_CATALOG
: nom de votre catalogue SparkNAMESPACE
: nom de votre nouvel espace de noms
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 = { ... } } }
Remplacez les éléments suivants :
PROJECT_ID
: ID du projet contenant votre ensemble de données cibleDATASET_ID
: ID de votre ensemble de données cibleLOCATION
: emplacement BigQuery dans lequel vous souhaitez créer l'ensemble de données.URI
: URI Cloud Storage pour toutes les tables de l'ensemble de données
Créer des tables Iceberg
Sélectionnez l'une des options suivantes :
API
Utilisez la méthode tables.insert
et spécifiez le champ ExternalCatalogTableOptions
dans la ressource de table que vous transmettez.
{ "tableReference": { "projectId": "PROJECT_ID", "datasetId": "DATASET_ID", "tableId": "TABLE_ID" }, "externalCatalogTableOptions": { "parameters": { "table_type": "iceberg", "metadata_location": "METADATA_URI" }, "connection_id": "CONNECTION_ID" } }
Remplacez les éléments suivants :
PROJECT_ID
: ID du projet contenant votre table cible.DATASET_ID
: ID de l'ensemble de données contenant votre table cible.TABLE_ID
: ID de votre table cible.METADATA_URI
: URI Cloud Storage du dernier fichier de métadonnées Iceberg. Exemple :gs://mybucket/mytable/metadata/1234.metadata.json
.CONNECTION_ID
: ID de votre connexion à Cloud Storage.
Spark SQL
CREATE TABLE SPARK_CATALOG.NAMESPACE.TABLE (id bigint, data string) USING iceberg;
Remplacez les éléments suivants :
SPARK_CATALOG
: nom de votre catalogue SparkNAMESPACE
: nom de votre espace de nomsTABLE
: nom de votre nouvelle table
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" } } }
Remplacez les éléments suivants :
TABLE
: nom de la table cible.STORAGE_URI
: URI Cloud Storage où sont stockées les données de la table, commençant pargs://
.METADATA_URI
: URI Cloud Storage du dernier fichier de métadonnées Iceberg. Exemple :gs://mybucket/mytable/metadata/1234.metadata.json
.
Afficher les ressources de métastore
Les sections suivantes expliquent comment afficher les ressources dans le metastore BigLake.
Afficher les espaces de noms
Sélectionnez l'une des options suivantes :
API
Utilisez la méthode datasets.list
pour afficher tous les espaces de noms ou la méthode datasets.get
pour afficher des informations sur un espace de noms défini.
Spark SQL
Pour afficher tous les espaces de noms d'un catalogue, utilisez l'instruction suivante :
SHOW { DATABASES | NAMESPACES } IN SPARK_CATALOG;
Remplacez SPARK_CATALOG
par le nom de votre catalogue Spark.
Pour afficher des informations sur un espace de noms défini, utilisez l'instruction suivante :
DESCRIBE { DATABASE | NAMESPACE } [EXTENDED] SPARK_CATALOG.NAMESPACE;
Remplacez les éléments suivants :
SPARK_CATALOG
: nom de votre catalogue SparkNAMESPACE
: nom de votre espace de noms
Afficher des tables
Sélectionnez l'une des options suivantes :
API
Utilisez la méthode tables.list
pour afficher toutes les tables d'un espace de noms ou la méthode tables.get
pour afficher des informations sur une table définie.
Spark SQL
Pour afficher toutes les tables d'un espace de noms, utilisez l'instruction suivante :
SHOW TABLES IN SPARK_CATALOG.NAMESPACE;
Remplacez les éléments suivants :
SPARK_CATALOG
: nom de votre catalogue SparkNAMESPACE
: nom de votre espace de noms
Pour afficher des informations sur une table définie, utilisez l'instruction suivante :
DESCRIBE TABLE [EXTENDED] SPARK_CATALOG.NAMESPACE.TABLE;
Remplacez les éléments suivants :
SPARK_CATALOG
: nom de votre catalogue SparkNAMESPACE
: nom de votre espace de nomsTABLE
: par le nom de votre table
Modifier les ressources de métastore
Les sections suivantes décrivent comment modifier les ressources dans le metastore BigLake.
Mettre à jour les espaces de noms
Sélectionnez l'une des options suivantes :
API
Utilisez la méthode datasets.patch
et mettez à jour le champ ExternalCatalogDatasetOptions
dans la ressource d'ensemble de données. La méthode datasets.update
n'est pas recommandée, car elle remplace l'intégralité de la ressource d'ensemble de données.
Spark SQL
Utilisez l'instruction ALTER DATABASE
.
Mettre à jour les tables Iceberg
Sélectionnez l'une des options suivantes :
API
Utilisez la méthode tables.patch
et mettez à jour le champ ExternalCatalogTableOptions
dans la ressource de table. La méthode tables.update
n'est pas recommandée, car elle remplace l'intégralité de la ressource de table.
Pour mettre à jour le schéma ou le fichier de métadonnées, utilisez la méthode tables.patch
et définissez la propriété autodetect_schema
sur "true" :
PATCH https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID?autodetect_schema=true
Remplacez les éléments suivants :
PROJECT_ID
: ID du projet contenant la table que vous souhaitez mettre à jourDATASET_ID
: ID de l'ensemble de données contenant la table que vous souhaitez mettre à jour.TABLE_ID
: ID de la table que vous souhaitez mettre à jour
Dans le corps de la requête, spécifiez la valeur mise à jour pour chaque champ. Par exemple, pour mettre à jour l'emplacement des métadonnées de la table Iceberg, spécifiez la valeur mise à jour pour le champ metadata_location
:
{ "externalCatalogTableOptions": { "parameters": {"metadata_location": "METADATA_URI"} }, "schema": null }'
Remplacez METADATA_URI
par l'URI Cloud Storage du dernier fichier de métadonnées Iceberg. Exemple : gs://mybucket/mytable/metadata/1234.metadata.json
.
Spark SQL
Utilisez l'instruction ALTER TABLE
.
Supprimer les ressources de métastore
Les sections suivantes décrivent comment supprimer des ressources dans le metastore BigLake.
Supprimer des espaces de noms
Sélectionnez l'une des options suivantes :
API
Exécutez la méthode datasets.delete
.
Définissez le paramètre deleteContents
sur "true" pour supprimer les tables de votre espace de noms.
Spark SQL
DROP NAMESPACE SPARK_CATALOG.NAMESPACE;
Remplacez les éléments suivants :
SPARK_CATALOG
: nom de votre catalogue SparkNAMESPACE
: nom de votre espace de noms
Supprimer des tables
Sélectionnez l'une des options suivantes :
API
Utilisez la méthode tables.delete
et spécifiez le nom de la table. Cette méthode ne supprime pas les fichiers associés dans Cloud Storage.
Spark SQL
Pour n'abandonner que la table, utilisez l'instruction suivante:
DROP TABLE SPARK_CATALOG.NAMESPACE.TABLE;
Remplacez les éléments suivants :
SPARK_CATALOG
: nom de votre catalogue SparkNAMESPACE
: nom de votre espace de nomsTABLE
: nom de la table à supprimer
Pour abandonner la table et supprimer les fichiers associés dans Cloud Storage, utilisez l'instruction suivante :
DROP TABLE SPARK_CATALOG.NAMESPACE.TABLE PURGE;
Remplacez les éléments suivants :
SPARK_CATALOG
: nom de votre catalogue SparkNAMESPACE
: nom de votre espace de nomsTABLE
: nom de la table à supprimer
Étapes suivantes
- Découvrez les fonctionnalités supplémentaires de BigLake Metastore.