Borderless Lakehouse admite la administración de recursos a través del catálogo de tiempo de ejecución de Lakehouse.
Este catálogo compartido elimina el requisito de mantener varios catálogos para las cargas de trabajo de código abierto en diferentes motores de procesamiento de datos. Las operaciones admitidas incluyen crear, ver, modificar y borrar recursos, como espacios de nombres y tablas.
Antes de comenzar
-
Verifica que la facturación esté habilitada para tu proyecto de Google Cloud .
-
Habilita las APIs de BigQuery, BigQuery Storage y Managed Service para Apache Spark, si aún no están habilitadas.
Roles necesarios para habilitar las APIs
Para habilitar las APIs, necesitas el permiso
serviceusage.services.enable. Si creaste el proyecto, es probable que ya tengas este permiso a través del rol de propietario (roles/owner). De lo contrario, puedes obtenerlo a través del rol de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin). Obtén información para otorgar roles.
Roles obligatorios
Para obtener los permisos que necesitas para administrar recursos de Apache Iceberg en el catálogo de tiempo de ejecución de Lakehouse, pídele a tu administrador que te otorgue los siguientes roles de IAM en tu proyecto:
- Editor de datos de BigQuery (
roles/bigquery.dataEditor) - Usuario de objetos de almacenamiento (
roles/storage.objectUser)
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 a través de roles personalizados o cualquier otro rol predefinido.
Crea recursos de catálogo
En las siguientes secciones, se describe cómo crear recursos en el catálogo de Lakehouse runtime.
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
pases.
{
"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: Es el ID del conjunto de datos de destino.URI: Es el URI de Cloud Storage para todas las tablas del conjunto de datos.LOCATION: Es la ubicación de BigQuery en la que deseas crear el conjunto de datos.
SQL de Apache Spark
CREATE NAMESPACE SPARK_CATALOG.NAMESPACE;
Reemplaza lo siguiente:
SPARK_CATALOG: Es el nombre de tu catálogo de Apache 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: Es el ID del conjunto de datos de destino.LOCATION: Es la ubicación de BigQuery en la que deseas crear el conjunto de datos.URI: Es el URI de Cloud Storage para todas las tablas del conjunto de datos.
Crea tablas de Apache 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: el ID del proyecto que contiene tu tabla de destino.DATASET_ID: 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 Apache 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.
SQL de Apache Spark
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 Apache Spark.NAMESPACE: Es el nombre de tu espacio de nombres.TABLE: Es 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 Apache Iceberg más reciente. Por ejemplo,gs://mybucket/mytable/metadata/1234.metadata.json.
Ver recursos del catálogo
En las siguientes secciones, se describe cómo ver los recursos en el catálogo de tiempo de ejecución de Lakehouse.
Visualiza 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.
SQL de Apache Spark
Para ver todos los espacios de nombres de un catálogo, usa la siguiente sentencia:
SHOW { DATABASES | NAMESPACES } IN SPARK_CATALOG;
Reemplaza SPARK_CATALOG por el nombre de tu
catálogo de Apache Spark.
Para ver información sobre un espacio de nombres definido, usa la siguiente sentencia:
DESCRIBE { DATABASE | NAMESPACE } [EXTENDED] SPARK_CATALOG.NAMESPACE;
Reemplaza lo siguiente:
SPARK_CATALOG: Es el nombre de tu catálogo de Apache 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 de un espacio de nombres o usa el
método tables.get
para ver información sobre una tabla definida.
SQL de Apache Spark
Para ver todas las tablas en un espacio de nombres, usa la siguiente sentencia:
SHOW TABLES IN SPARK_CATALOG.NAMESPACE;
Reemplaza lo siguiente:
SPARK_CATALOG: Es el nombre de tu catálogo de Apache 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 Apache Spark.NAMESPACE: Es el nombre de tu espacio de nombres.TABLE: el nombre de tu tabla.
Modifica los recursos del catálogo
En las siguientes secciones, se describe cómo modificar los recursos en el catálogo de tiempo de ejecución de Lakehouse.
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, ya que reemplaza todo el recurso del conjunto de datos.
SQL de Apache Spark
Usa la sentencia ALTER DATABASE.
Actualiza tablas de Apache 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, ya que reemplaza todo el recurso de la tabla.
Para actualizar el esquema o el archivo de metadatos, usa el método tables.patch y establece
la propiedad autodetect_schema en true:
PATCH https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID?autodetect_schema=true
Reemplaza lo siguiente:
PROJECT_ID: Es el ID del proyecto que contiene la tabla que deseas actualizar.DATASET_ID: 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 Apache 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 Apache Iceberg más reciente. Por ejemplo, gs://mybucket/mytable/metadata/1234.metadata.json.
SQL de Apache Spark
Usa la sentencia ALTER TABLE.
Borra recursos del catálogo
En las siguientes secciones, se describe cómo borrar recursos en el catálogo de tiempo de ejecución de Lakehouse.
Borra espacios de nombres
Selecciona una de las siguientes opciones:
API
Usa el método datasets.delete.
Establece el parámetro deleteContents como verdadero para borrar las tablas en tu
espacio de nombres.
SQL de Apache Spark
DROP NAMESPACE SPARK_CATALOG.NAMESPACE;
Reemplaza lo siguiente:
SPARK_CATALOG: Es el nombre de tu catálogo de Apache 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.
SQL de Apache Spark
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 Apache 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 Apache 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 del catálogo de entorno de ejecución de Lakehouse.