Gestionar recursos en BigLake Metastore
El almacén de metadatos de BigLake es un almacén de metadatos único y compartido que permite compartir datos entre motores de procesamiento de datos, lo que elimina la necesidad de mantener almacenes de metadatos independientes para tus cargas de trabajo de código abierto.
En este documento se explica cómo crear, ver, modificar y eliminar recursos en el metastore de BigLake.
Antes de empezar
-
Verify that billing is enabled for your Google Cloud project.
Consulta cómo comprobar si la facturación está habilitada en un proyecto. -
Enable the BigQuery, BigQuery Storage, and Dataproc APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. - Opcional: consulta cómo funciona el metastore de BigLake y por qué deberías usarlo.
Roles obligatorios
Para obtener los permisos que necesitas para gestionar recursos de Iceberg en el metastore de BigLake, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos en tu proyecto:
-
Editor de datos de BigQuery (
roles/bigquery.dataEditor
) -
Administrador de objetos de Storage (
roles/storage.objectAdmin
)
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.
Crear recursos de metastore
En las siguientes secciones se describe cómo crear recursos en el metastore de BigLake.
Crear espacios de nombres
Selecciona una de las opciones siguientes:
API
Usa el
método datasets.insert
y especifica el campo
ExternalCatalogDatasetOptions
en el recurso de conjunto de datos que
envíes.
{ "datasetReference": { "projectId": "PROJECT_ID", "datasetId": "DATASET_ID" }, "externalCatalogDatasetOptions": { "defaultStorageLocationUri": "URI", "parameters": { ... } }, "location": "LOCATION" }
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto que contiene el conjunto de datos de destinoDATASET_ID
: el ID del conjunto de datos de destinoURI
: el URI de Cloud Storage de todas las tablas del conjunto de datosLOCATION
: la ubicación de BigQuery en la que quieres crear el conjunto de datos
Spark SQL
CREATE NAMESPACE SPARK_CATALOG.NAMESPACE;
Haz los cambios siguientes:
SPARK_CATALOG
: el nombre de tu catálogo de SparkNAMESPACE
: el nombre del nuevo espacio de nombres
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 = { ... } } }
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto que contiene el conjunto de datos de destinoDATASET_ID
: el ID del conjunto de datos de destinoLOCATION
: la ubicación de BigQuery en la que quieres crear el conjunto de datosURI
: el URI de Cloud Storage de todas las tablas del conjunto de datos
Crear tablas Iceberg
Selecciona una de las opciones siguientes:
API
Usa el método tables.insert
y especifica el campo ExternalCatalogTableOptions
en el recurso de tabla que envíes.
{ "tableReference": { "projectId": "PROJECT_ID", "datasetId": "DATASET_ID", "tableId": "TABLE_ID" }, "externalCatalogTableOptions": { "parameters": { "table_type": "iceberg", "metadata_location": "METADATA_URI" }, "connection_id": "CONNECTION_ID" } }
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto que contiene la tabla de destino.DATASET_ID
: el ID del conjunto de datos que contiene la tabla de destino.TABLE_ID
: el ID de la tabla de destino.METADATA_URI
: el URI de Cloud Storage del archivo de metadatos de Iceberg más reciente. Por ejemplo,gs://mybucket/mytable/metadata/1234.metadata.json
.CONNECTION_ID
: el ID de tu conexión a Cloud Storage.
Spark SQL
CREATE TABLE SPARK_CATALOG.NAMESPACE.TABLE (id bigint, data string) USING iceberg;
Haz los cambios siguientes:
SPARK_CATALOG
: el nombre de tu catálogo de SparkNAMESPACE
: el nombre de tu espacio de nombresTABLE
: el nombre de la nueva tabla
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" } } }
Haz los cambios siguientes:
TABLE
: el nombre de la tabla de destino.STORAGE_URI
: el URI de Cloud Storage donde se almacenan los datos de la tabla, que empieza porgs://
.METADATA_URI
: el URI de Cloud Storage del archivo de metadatos de Iceberg más reciente. Por ejemplo,gs://mybucket/mytable/metadata/1234.metadata.json
.
Ver recursos del metastore
En las siguientes secciones se describe cómo ver recursos en BigLake Metastore.
Ver espacios de nombres
Selecciona una de las opciones siguientes:
API
Usa el método datasets.list
para ver todos los espacios de nombres o el método datasets.get
para ver información sobre un espacio de nombres definido.
Spark SQL
Para ver todos los espacios de nombres de un catálogo, utiliza la siguiente instrucción:
SHOW { DATABASES | NAMESPACES } IN SPARK_CATALOG;
Sustituye SPARK_CATALOG
por el nombre de tu catálogo de Spark.
Para ver información sobre un espacio de nombres definido, utiliza la siguiente instrucción:
DESCRIBE { DATABASE | NAMESPACE } [EXTENDED] SPARK_CATALOG.NAMESPACE;
Haz los cambios siguientes:
SPARK_CATALOG
: el nombre de tu catálogo de SparkNAMESPACE
: el nombre de tu espacio de nombres
Ver tablas
Selecciona una de las opciones siguientes:
API
Usa el
método tables.list
para ver todas las tablas de un espacio de nombres o el
método tables.get
para ver información sobre una tabla definida.
Spark SQL
Para ver todas las tablas de un espacio de nombres, usa la siguiente instrucción:
SHOW TABLES IN SPARK_CATALOG.NAMESPACE;
Haz los cambios siguientes:
SPARK_CATALOG
: el nombre de tu catálogo de SparkNAMESPACE
: el nombre de tu espacio de nombres
Para ver información sobre una tabla definida, usa la siguiente instrucción:
DESCRIBE TABLE [EXTENDED] SPARK_CATALOG.NAMESPACE.TABLE;
Haz los cambios siguientes:
SPARK_CATALOG
: el nombre de tu catálogo de SparkNAMESPACE
: el nombre de tu espacio de nombresTABLE
: el nombre de la tabla
Modificar recursos de metastore
En las siguientes secciones se describe cómo modificar recursos en el metastore de BigLake.
Actualizar espacios de nombres
Selecciona una de las opciones siguientes:
API
Usa el
método datasets.patch
y actualiza el
campo ExternalCatalogDatasetOptions
en el recurso de conjunto de datos. No se recomienda usar el método datasets.update
porque sustituye todo el recurso del conjunto de datos.
Spark SQL
Usa la instrucción ALTER DATABASE
.
Actualizar tablas Iceberg
Selecciona una de las opciones siguientes:
API
Usa el método tables.patch
y actualiza el campo ExternalCatalogTableOptions
en el recurso de tabla. No se recomienda usar el método tables.update
porque sustituye todo el recurso de tabla.
Para actualizar el archivo de esquema o de metadatos, usa el método tables.patch
y asigna el valor true a la propiedad autodetect_schema
:
PATCH https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID?autodetect_schema=true
Haz los cambios siguientes:
PROJECT_ID
: ID del proyecto que contiene la tabla que quieres actualizar.DATASET_ID
: ID del conjunto de datos que contiene la tabla que quieres actualizar.TABLE_ID
: el ID de la tabla que quieras actualizar
En el cuerpo de la solicitud, especifique el valor actualizado de cada campo. Por ejemplo, para actualizar la ubicación de los metadatos de la tabla Iceberg, especifica el valor actualizado del campo metadata_location
:
{ "externalCatalogTableOptions": { "parameters": {"metadata_location": "METADATA_URI"} }, "schema": null }'
Sustituye METADATA_URI
por el URI de Cloud Storage del archivo de metadatos de Iceberg más reciente. Por ejemplo, gs://mybucket/mytable/metadata/1234.metadata.json
.
Spark SQL
Usa la instrucción ALTER TABLE
.
Eliminar recursos de metastore
En las siguientes secciones se describe cómo eliminar recursos en BigLake Metastore.
Eliminar espacios de nombres
Selecciona una de las opciones siguientes:
API
Usa el método datasets.delete
.
Asigna el valor true al parámetro deleteContents
para eliminar las tablas de tu espacio de nombres.
Spark SQL
DROP NAMESPACE SPARK_CATALOG.NAMESPACE;
Haz los cambios siguientes:
SPARK_CATALOG
: el nombre de tu catálogo de SparkNAMESPACE
: el nombre de tu espacio de nombres
Cómo eliminar tablas
Selecciona una de las opciones siguientes:
API
Usa el método tables.delete
y especifica el nombre de la tabla. Este método no elimina los archivos asociados de Cloud Storage.
Spark SQL
Para eliminar solo la tabla, usa la siguiente instrucción:
DROP TABLE SPARK_CATALOG.NAMESPACE.TABLE;
Haz los cambios siguientes:
SPARK_CATALOG
: el nombre de tu catálogo de SparkNAMESPACE
: el nombre de tu espacio de nombresTABLE
: el nombre de la tabla que se va a eliminar.
Para eliminar la tabla y los archivos asociados en Cloud Storage, usa la siguiente instrucción:
DROP TABLE SPARK_CATALOG.NAMESPACE.TABLE PURGE;
Haz los cambios siguientes:
SPARK_CATALOG
: el nombre de tu catálogo de SparkNAMESPACE
: el nombre de tu espacio de nombresTABLE
: el nombre de la tabla que se va a eliminar
Siguientes pasos
- Consulta información sobre las funciones adicionales del metastore de BigLake.