Administra recursos de Iceberg en BigLake Metastore
BigLake Metastore es un metastore único y compartido que permite el uso compartido de datos en los motores de procesamiento de datos, lo que elimina la necesidad de mantener metastores separados para tus cargas de trabajo de código abierto.
En este documento, se explica cómo crear, ver, modificar y borrar recursos de Iceberg en BigLake Metastore.
Antes de comenzar
-
Make sure that billing is enabled for your Google Cloud project.
Obtén información para verificar si la facturación está habilitada en un proyecto. -
Enable the BigQuery, BigQuery Storage, and Dataproc APIs.
- Opcional: Comprende cómo funciona BigLake Metastore y por qué deberías usarlo.
Roles obligatorios
Para obtener los permisos que necesitas para administrar recursos de Iceberg en el metastore de BigLake, pídele a tu administrador que te otorgue los siguientes roles de IAM 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 otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.
Crea recursos del almacén de metadatos
En las siguientes secciones, se describe cómo crear recursos en BigLake Metastore.
Crea espacios de nombres
Selecciona una de las siguientes opciones:
API
Usa el método datasets.insert
y especifica el campo ExternalCatalogDatasetOptions
en el recurso del conjunto de datos que pasas.
{ "datasetReference": { "projectId": "PROJECT_ID", "datasetId": "DATASET_ID" }, "externalCatalogDatasetOptions": { "defaultStorageLocationUri": "URI", "parameters": { ... } }, "location": "LOCATION" }
Reemplaza lo siguiente:
PROJECT_ID
: Es el ID del proyecto que contiene tu conjunto de datos de destino.DATASET_ID
: ID de tu conjunto de datos de destinoURI
: El URI de Cloud Storage para todas las tablas del conjunto de datosLOCATION
: La ubicación de BigQuery en la que deseas crear el conjunto de datos
Spark SQL
CREATE NAMESPACE SPARK_CATALOG.NAMESPACE;
Reemplaza lo siguiente:
SPARK_CATALOG
: Es el nombre de tu catálogo de Spark.NAMESPACE
: Es el nombre de tu espacio de nombres nuevo.
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 = { ... } } }
Reemplaza lo siguiente:
PROJECT_ID
: Es el ID del proyecto que contiene tu conjunto de datos de destino.DATASET_ID
: ID de tu conjunto de datos de destinoLOCATION
: La ubicación de BigQuery en la que deseas crear el conjunto de datosURI
: El URI de Cloud Storage para todas las tablas del conjunto de datos
Crea tablas de Iceberg
Selecciona una de las siguientes opciones:
API
Usa el método tables.insert
y especifica el campo ExternalCatalogTableOptions
en el recurso de tabla que pasas.
{ "tableReference": { "projectId": "PROJECT_ID", "datasetId": "DATASET_ID", "tableId": "TABLE_ID" }, "externalCatalogTableOptions": { "parameters": { "table_type": "iceberg", "metadata_location": "METADATA_URI" }, "connection_id": "CONNECTION_ID" } }
Reemplaza lo siguiente:
PROJECT_ID
: Es el ID del proyecto que contiene tu tabla de destino.DATASET_ID
: Es el ID del conjunto de datos que contiene tu tabla de destino.TABLE_ID
: Es el ID de la tabla de destino.METADATA_URI
: El URI de Cloud Storage para el archivo de metadatos de Iceberg más reciente. Por ejemplo,gs://mybucket/mytable/metadata/1234.metadata.json
.CONNECTION_ID
: Es el ID de tu conexión a Cloud Storage.
Spark SQL
CREATE TABLE SPARK_CATALOG.NAMESPACE.TABLE (id bigint, data string) USING iceberg;
Reemplaza lo siguiente:
SPARK_CATALOG
: Es el nombre de tu catálogo de Spark.NAMESPACE
: Es el nombre de tu espacio de nombres.TABLE
: El nombre de tu tabla nueva
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" } } }
Reemplaza lo siguiente:
TABLE
: Es el nombre de la tabla de destino.STORAGE_URI
: Es el URI de Cloud Storage en el que se almacenan los datos de la tabla, que comienza congs://
.METADATA_URI
: El URI de Cloud Storage para el archivo de metadatos de Iceberg más reciente. Por ejemplo,gs://mybucket/mytable/metadata/1234.metadata.json
.
Visualiza recursos del almacén de metadatos
En las siguientes secciones, se describe cómo ver los recursos en el almacén de metadatos de BigLake.
Cómo ver los espacios de nombres
Selecciona una de las siguientes opciones:
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 en un catálogo, usa la siguiente instrucción:
SHOW { DATABASES | NAMESPACES } IN SPARK_CATALOG;
Reemplaza SPARK_CATALOG
por el nombre de tu catálogo de Spark.
Para ver información sobre un espacio de nombres definido, usa la siguiente instrucción:
DESCRIBE { DATABASE | NAMESPACE } [EXTENDED] SPARK_CATALOG.NAMESPACE;
Reemplaza lo siguiente:
SPARK_CATALOG
: Es el nombre de tu catálogo de Spark.NAMESPACE
: Es el nombre de tu espacio de nombres.
Ver tablas
Selecciona una de las siguientes opciones:
API
Usa el método tables.list
para ver todas las tablas en 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 en un espacio de nombres, usa la siguiente instrucción:
SHOW TABLES IN SPARK_CATALOG.NAMESPACE;
Reemplaza lo siguiente:
SPARK_CATALOG
: Es el nombre de tu catálogo de Spark.NAMESPACE
: Es 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;
Reemplaza lo siguiente:
SPARK_CATALOG
: Es el nombre de tu catálogo de Spark.NAMESPACE
: Es el nombre de tu espacio de nombres.TABLE
: nombre de la tabla.
Modifica los recursos del almacén de metadatos
En las siguientes secciones, se describe cómo modificar los recursos en BigLake Metastore.
Actualiza los espacios de nombres
Selecciona una de las siguientes opciones:
API
Usa el método datasets.patch
y actualiza el campo ExternalCatalogDatasetOptions
en el recurso del conjunto de datos. No se recomienda el método datasets.update
porque reemplaza todo el recurso del conjunto de datos.
Spark SQL
Usa la sentencia ALTER DATABASE
.
Actualiza tablas de Iceberg
Selecciona una de las siguientes opciones:
API
Usa el método tables.patch
y actualiza el campo ExternalCatalogTableOptions
en el recurso de tabla. No se recomienda el método tables.update
porque reemplaza todo el recurso de tabla.
Para actualizar el esquema o el archivo de metadatos, usa el método tables.patch
y establece la propiedad autodetect_schema
como verdadera:
PATCH https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID?autodetect_schema=true
Reemplaza lo siguiente:
PROJECT_ID
: ID del proyecto que contiene la tabla que deseas actualizarDATASET_ID
: Es el ID del conjunto de datos que contiene la tabla que deseas actualizar.TABLE_ID
: Es el ID de la tabla que deseas actualizar.
En el cuerpo de la solicitud, especifica el valor actualizado para cada campo. Por ejemplo, para actualizar la ubicación de los metadatos de la tabla de Iceberg, especifica el valor actualizado para el campo metadata_location
:
{ "externalCatalogTableOptions": { "parameters": {"metadata_location": "METADATA_URI"} }, "schema": null }'
Reemplaza 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 sentencia ALTER TABLE
.
Borra los recursos del almacén de metadatos
En las siguientes secciones, se describe cómo borrar recursos en BigLake Metastore.
Borra espacios de nombres
Selecciona una de las siguientes opciones:
API
Usa el método datasets.delete
.
Establece el parámetro deleteContents
en verdadero para borrar las tablas de tu espacio de nombres.
Spark SQL
DROP NAMESPACE SPARK_CATALOG.NAMESPACE;
Reemplaza lo siguiente:
SPARK_CATALOG
: Es el nombre de tu catálogo de Spark.NAMESPACE
: Es el nombre de tu espacio de nombres.
Borra las tablas
Selecciona una de las siguientes opciones:
API
Usa el método tables.delete
y especifica el nombre de la tabla. Con este método, no se borran los archivos asociados en Cloud Storage.
Spark SQL
Para descartar la tabla, usa la siguiente instrucción:
DROP TABLE SPARK_CATALOG.NAMESPACE.TABLE;
Reemplaza lo siguiente:
SPARK_CATALOG
: Es el nombre de tu catálogo de Spark.NAMESPACE
: Es el nombre de tu espacio de nombres.TABLE
: Es el nombre de la tabla que se descartará.
Para descartar la tabla y borrar los archivos asociados en Cloud Storage, usa la siguiente instrucción:
DROP TABLE SPARK_CATALOG.NAMESPACE.TABLE PURGE;
Reemplaza lo siguiente:
SPARK_CATALOG
: Es el nombre de tu catálogo de Spark.NAMESPACE
: Es el nombre de tu espacio de nombres.TABLE
: Es el nombre de la tabla que se borrará.
¿Qué sigue?
- Obtén más información sobre las funciones adicionales de BigLake Metastore.