Las tablas de BigLake para Apache Iceberg (en adelante, tablas de BigLake Iceberg) son tablas de Iceberg que creas a partir de motores de código abierto y almacenas en Cloud Storage. Al igual que todas las tablas que usan el metastore de BigLake, los motores de código abierto y BigQuery pueden leerlas. Sin embargo, el motor de código abierto que creó la tabla es el único que puede escribir en ella.
Antes de comenzar
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the BigLake API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
Roles obligatorios
Para obtener los permisos que necesitas para administrar las tablas de BigLake Iceberg, pídele a tu administrador que te otorgue los siguientes roles de IAM :
-
Crear y borrar tablas:
-
Administrador de BigLake (
roles/biglake.admin) en el proyecto -
Administrador de almacenamiento (
roles/storage.admin) en el bucket de Cloud Storage
-
Administrador de BigLake (
-
Leer datos de la tabla en el modo de venta de credenciales:
Visualizador de BigLake (
roles/biglake.viewer) en el proyecto -
Escribir datos de la tabla en el modo de venta de credenciales:
Editor de BigLake (
roles/biglake.editor) en el proyecto -
Lee datos de tablas en el modo de no venta de credenciales:
-
Visualizador de BigLake (
roles/biglake.viewer) en el proyecto -
Visualizador de objetos de almacenamiento (
roles/storage.objectViewer) en el bucket de Cloud Storage
-
Visualizador de BigLake (
-
Escribe datos de la tabla en el modo de no venta de credenciales:
-
Editor de BigLake (
roles/biglake.editor) en el proyecto -
Usuario de objetos de almacenamiento (
roles/storage.objectUser) en el bucket de Cloud Storage
-
Editor de BigLake (
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 una tabla de BigLake Iceberg
Spark
spark.sql("CREATE TABLE NAMESPACE_NAME.TABLE_NAME (id int, data string) USING ICEBERG;") spark.sql("DESCRIBE NAMESPACE_NAME.TABLE_NAME").show()
Reemplaza lo siguiente:
NAMESPACE_NAME: El nombre de tu espacio de nombresTABLE_NAME: Un nombre para tu tabla
Trino
CREATE TABLE SCHEMA_NAME.TABLE_NAME (id int, data varchar); DESCRIBE SCHEMA_NAME.TABLE_NAME;
Reemplaza lo siguiente:
SCHEMA_NAME: Es el nombre de tu esquema.TABLE_NAME: Un nombre para tu tabla
Enumerar tablas
Spark
spark.sql("SHOW TABLES").show()
Trino
SHOW TABLES;
Inserta datos en la tabla
En el siguiente ejemplo, se insertan datos de muestra en la tabla:
Spark
spark.sql("INSERT INTO TABLE_NAME VALUES (1, \"first row\"), (2, \"second row\"), (3, \"third row\");")
Trino
INSERT INTO TABLE_NAME VALUES (1, 'first row'), (2, 'second row'), (3, 'third row');
Consultar una tabla
En el siguiente ejemplo, se seleccionan todos los datos de la tabla:
Spark
spark.sql("SELECT * FROM TABLE_NAME;").show()
Trino
SELECT * FROM TABLE_NAME;
BigQuery
Para consultar tablas de Iceberg BigLake desde BigQuery, usa el nombre de tabla de cuatro partes en tu consulta con el siguiente formato: PROJECT_NAME.BIGLAKE_CATALOG_ID.NAMESPACE_OR_SCHEMA_NAME.TABLE_NAME.
SELECT * FROM `PROJECT_NAME.BIGLAKE_CATALOG_ID.NAMESPACE_OR_SCHEMA_NAME.TABLE_NAME`;
Reemplaza lo siguiente:
PROJECT_NAME: Es el proyecto propietario del catálogo en BigLake Metastore. Se facturará la consulta al proyecto seleccionado en la consola de Google Cloud .BIGLAKE_CATALOG_ID: Es el ID del catálogo de BigLake Metastore que se especificó cuando se creó el catálogo. Este identificador se usa como el nombre del catálogo en las consultas de BigQuery.
Importante
Este identificador también es el nombre de tu bucket de Cloud Storage.
Por ejemplo, si creaste tu bucket para almacenar tu catálogo y lo llamaste iceberg-bucket, tanto el nombre del catálogo como el del bucket serán iceberg-bucket. Esto se usará más adelante cuando consultes tu catálogo en BigQuery con la sintaxis de P.C.N.T. Por ejemplo my-project.biglake_catalog_id.quickstart_namespace.quickstart_table.
NAMESPACE_OR_SCHEMA_NAME: Es el espacio de nombres de la tabla si se usa Spark o el nombre del esquema de la tabla si se usa Trino.TABLE_NAME: Es el nombre de tu tabla.
Cómo modificar una tabla
En el siguiente ejemplo, se agrega una columna a la tabla:
Spark
spark.sql("ALTER TABLE TABLE_NAME ADD COLUMNS ( desc string);") spark.sql("DESCRIBE NAMESPACE_NAME.TABLE_NAME").show()
Trino
ALTER TABLE TABLE_NAME ADD COLUMN desc varchar; DESCRIBE SCHEMA_NAME.TABLE_NAME;
Borra una tabla
Spark
spark.sql("DROP TABLE TABLE_NAME;")
Trino
DROP TABLE TABLE_NAME;
Precios
Para obtener detalles sobre los precios, consulta Precios de BigLake.
¿Qué sigue?
- Obtén más información sobre el catálogo REST de Iceberg.