Crear tabla

Cuando se crea una tabla de Apache Iceberg, se registran los metadatos de la tabla dentro de un espacio de nombres en el catálogo de entornos de ejecución de Lakehouse.

Si no especificas una ubicación de almacenamiento explícita a nivel del espacio de nombres o de la tabla durante la creación de la tabla, el sistema construye automáticamente los metadatos y los directorios de datos de la tabla en la ubicación predeterminada del catálogo (derivada del bucket base de Cloud Storage del catálogo) agregando los identificadores del espacio de nombres y de la tabla.

Antes de comenzar

  1. Verifica que la facturación esté habilitada para tu Google Cloud proyecto.

  2. Habilita la API de BigLake.

    Roles necesarios para habilitar las APIs

    Para habilitar las APIs, necesitas el rol de IAM de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin), que contiene el permiso serviceusage.services.enable. Obtén más información para otorgar roles.

    Habilitar la API

  3. Configura el catálogo de entornos de ejecución de Lakehouse con el extremo del catálogo REST de Apache Iceberg.

Roles obligatorios

Para obtener los permisos que necesitas para crear una tabla, pídele a tu administrador que te otorgue los siguientes roles de IAM en tu proyecto y bucket de almacenamiento:

  • Todos:
    • Administrador de BigLake (roles/biglake.admin) - tu proyecto
    • Administrador de almacenamiento (roles/storage.admin) - el bucket de Cloud Storage de destino

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.

Capacidades y compatibilidad de tablas

Cuando usas tablas en el catálogo de entornos de ejecución de Lakehouse, es útil comprender los diferentes tipos de tablas y sus capacidades de inclusión. Para obtener más información sobre el uso de tablas de Apache Iceberg específicamente, consulta Descripción general de las tablas de Apache Iceberg.

Tablas de Iceberg compatibles

Solo se admiten las tablas de Apache Iceberg V2 (DG) y V3 (vista previa). Las tablas de Iceberg V1 no son compatibles. Para actualizar las tablas V1 existentes, consulta Actualiza las tablas de Iceberg V1 a V2.

Usa opciones de tabla (vista previa)

Puedes habilitar el uso de las capacidades administradas de BigQuery, como el lenguaje de manipulación de datos (DML) de BigQuery y la administración automática de tablas, configurando propiedades de tabla específicas. Estas funciones se habilitan de diferentes maneras según dónde se cree la tabla:

  • Desde BigQuery: El DML de BigQuery y la administración automática de tablas están habilitados de forma predeterminada.
  • Desde motores de código abierto: Para habilitar la función, debes configurar explícitamente las propiedades de la tabla. Consulta Configura las opciones de tabla options para obtener más información.

Crea una tabla

Crea una tabla de Iceberg.

Console

  1. En la Google Cloud consola de, ve a Lakehouse.

    Ir a Lakehouse

  2. Selecciona un catálogo existente o crea uno si no tienes.

  3. En la barra de menú, haz clic en + Crear tabla.

  4. En Formato de tabla, selecciona Iceberg.

  5. En Nombre de la tabla, ingresa un nombre de tabla único.

  6. Haz clic en Crear.

Tu tabla aparece en la página Detalles del espacio de nombres.

Spark

spark.sql("CREATE TABLE NAMESPACE_NAME.TABLE_NAME (id int, data string) USING ICEBERG;")

Reemplaza los siguientes valores:

  • NAMESPACE_NAME: Es el nombre de tu espacio de nombres.
  • TABLE_NAME: Es un nombre para tu tabla.

Para habilitar la interoperabilidad de lectura/escritura y la administración de tablas (vista previa), agrega las propiedades a la cláusula TBLPROPERTIES:

TBLPROPERTIES (
  'gcp.biglake.bigquery-dml.enabled' = true,
  'gcp.biglake.table-management.enabled' = true
)

Trino

CREATE TABLE SCHEMA_NAME.TABLE_NAME (id int, data varchar);

Reemplaza los siguientes valores:

  • SCHEMA_NAME: Es el nombre de tu esquema.
  • TABLE_NAME: Es un nombre para tu tabla.

Para habilitar la interoperabilidad de lectura/escritura y la administración de tablas (vista previa), agrega estas propiedades a la WITH cláusula:

WITH (
  "gcp.biglake.bigquery-dml.enabled" = 'true',
  "gcp.biglake.table-management.enabled" = 'true'
)

gcloud

Para crear una tabla con gcloud, ejecuta el gcloud biglake iceberg tables create comando.

gcloud biglake iceberg tables create \
    --project="PROJECT_ID" \
    --catalog="CATALOG_ID" \
    --namespace="NAMESPACE_NAME" \
    --create-from-file="TABLE_DEFINITION_FILE"

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID del Google Cloud proyecto de.
  • CATALOG_ID: Es el ID de tu catálogo.
  • NAMESPACE_NAME: Es el nombre del espacio de nombres de tu catálogo.
  • TABLE_DEFINITION_FILE: Es la ruta de acceso a un archivo JSON que contiene la definición de la tabla de Iceberg.

BigQuery

Para crear una tabla de Apache Iceberg en el catálogo de entornos de ejecución de Lakehouse desde BigQuery, usa la siguiente instrucción CREATE TABLE de GoogleSQL. Cuando creas una tabla desde BigQuery, el DML de BigQuery y la administración automática de tablas están habilitados de forma predeterminada.

CREATE TABLE `PROJECT_ID.CATALOG_ID.NAMESPACE.TABLE_NAME` (id int, data string);

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID del proyecto de Google Cloud .
  • CATALOG_ID: Es el ID del catálogo de entornos de ejecución de Lakehouse.
  • NAMESPACE: Es el nombre del espacio de nombres de Iceberg.
  • TABLE_NAME: Es un nombre para tu tabla de Iceberg.

REST

Para crear una tabla de Iceberg con la API de REST, realiza una solicitud POST al CreateIcebergTable extremo:

POST /iceberg/v1/restcatalog/v1/projects/PROJECT_ID/catalogs/CATALOG_ID/namespaces/NAMESPACE_NAME/tables

El cuerpo de la solicitud debe contener una carga útil JSON CreateTableRequest de Iceberg válida que defina el esquema de la tabla, la especificación de partición y las propiedades iniciales.

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID del Google Cloud proyecto de.
  • CATALOG_ID: Es el ID de tu catálogo.
  • NAMESPACE_NAME: Es el nombre del espacio de nombres de tu catálogo.

¿Qué sigue?