Usa tablas de BigLake para Apache Iceberg

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

  1. Verify that billing is enabled for your Google Cloud project.

  2. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

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 :

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:

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?