Compartir a través de


Uso de las características de Apache Iceberg v3

Importante

Esta característica se encuentra en su versión beta. Los administradores del área de trabajo pueden controlar el acceso a esta característica desde la página Vistas previas . Consulte Administración de versiones preliminares de Azure Databricks.

En esta página se describe cómo usar las características de Apache Iceberg v3 con el catálogo de Unity. Iceberg v3 mejora el rendimiento de las consultas e introduce nuevas características para las tablas administradas de Delta Lake con UniForm, tablas de Iceberg administradas y tablas de Iceberg externas.

Las características clave de Iceberg v3 son:

  • Vectores de eliminación: habilite eliminaciones eficaces de nivel de fila sin volver a escribir archivos de datos completos.
  • Tipo de datos VARIANT: admite el almacenamiento y el procesamiento de datos semiestructurados.
  • Linaje de filas: realiza un seguimiento de los cambios incrementales en los datos de la tabla.

El linaje de filas es necesario para todas las tablas de Iceberg v3. No hay ningún comando para habilitar o deshabilitar el linaje de filas.

Requisitos

Para usar las características de Iceberg v3, debe cumplir los siguientes requisitos:

  • Un área de trabajo con el catálogo de Unity habilitado
  • Databricks Runtime 17.3 o superior para leer y escribir en tablas administradas con Iceberg v3

Creación de una nueva tabla con Iceberg v3

Cree nuevas tablas con Iceberg v3 habilitadas tanto para las tablas Delta administradas con UniForm como para las tablas de Iceberg administradas.

Tabla Delta administrada con UniForm

Para crear una nueva tabla Delta administrada con UniForm y Iceberg v3 habilitadas, use el siguiente comando SQL:

CREATE OR REPLACE TABLE main.schema.table (c1 INT) TBLPROPERTIES(
  'delta.universalFormat.enabledFormats' = 'iceberg',
  'delta.enableIcebergCompatV3' = 'true'
);

Para obtener más información sobre UniForm, consulte Leer tablas Delta con clientes de Iceberg.

Tabla de Iceberg administrada

Para crear una nueva tabla de Iceberg administrada con el formato v3, use el siguiente comando SQL:

CREATE OR REPLACE TABLE main.schema.table (c1 INT)
USING iceberg
TBLPROPERTIES ('format-version' = 3);

Para obtener más información sobre las tablas de Iceberg administradas, consulte ¿Qué es Apache Iceberg en Azure Databricks?.

Actualización de una tabla existente a Iceberg v3

Puede actualizar una tabla existente a Iceberg v3 mediante:

  1. Habilitación de cualquier característica v3 en una tabla.
  2. Para establecer la versión de formato Iceberg en una tabla, configúrela en 3 (según se muestra a continuación).

Advertencia

Las tablas de Iceberg administradas que se actualizan a la versión 3 no se pueden degradar. Las tablas Delta administradas con UniForm se pueden degradar de forma segura.

Tabla Delta administrada con UniForm

Para actualizar una tabla Delta administrada con UniForm a v3, use el siguiente comando:

ALTER TABLE catalog.schema.table SET TBLPROPERTIES(
  'delta.enableIcebergCompatV3' = 'true',
  'delta.enableIcebergCompatV2' = 'false'
);

Tabla de Iceberg administrada

Para actualizar una tabla de Iceberg administrada a v3, use el siguiente comando:

ALTER TABLE catalog.schema.table SET TBLPROPERTIES (
  'format-version' = 3
);

Habilitación de vectores de eliminación

Los vectores de eliminación optimizan las operaciones de modificación de datos de nivel de fila y están habilitados de forma predeterminada en todas las nuevas tablas de Iceberg v3. Consulte Vectores de eliminación en Databricks.

Nota:

Permitir vectores de eliminación en una tabla de Iceberg existente actualiza la versión del formato Iceberg a 3.

Tabla Delta administrada con UniForm

Para crear una nueva tabla Delta administrada con UniForm, Iceberg v3 y vectores de eliminación habilitados, establezca las siguientes propiedades de tabla:

CREATE TABLE catalog.schema.table (c1 INT) TBLPROPERTIES(
  'delta.enableDeletionVectors' = 'true',
  'delta.enableIcebergCompatV3' = 'true',
  'delta.universalFormat.enabledFormats' = 'iceberg'
);

Tabla de Iceberg administrada

Para crear una nueva tabla de Iceberg administrada con vectores de eliminación habilitados, establezca la iceberg.enableDeletionVectors propiedad table:

CREATE TABLE catalog.schema.table (c1 INT)
USING ICEBERG TBLPROPERTIES (
  'iceberg.enableDeletionVectors' = 'true'
);

Usar el tipo de datos VARIANT

El tipo de datos VARIANT permite almacenar y consultar datos semiestructurados.

Nota:

Uso del VARIANT en una tabla de Iceberg existente actualiza la versión del formato Iceberg a 3.

Tabla Delta administrada con UniForm

Para crear una nueva tabla Delta administrada con UniForm y una columna VARIANT:

CREATE TABLE catalog.schema.deltaTable (col VARIANT) TBLPROPERTIES(
  'delta.enableIcebergCompatV3' = 'true',
  'delta.universalFormat.enabledFormats' = 'iceberg'
);

Tabla de Iceberg administrada

Para crear una nueva tabla Iceberg gestionada con una columna variante:

CREATE TABLE catalog.schema.icebergTable (col VARIANT) USING iceberg;

Para agregar una columna VARIANT a una tabla existente, use el ALTER TABLE comando :

ALTER TABLE catalog.schema.table ADD COLUMN variant_col VARIANT;

Restauración de una tabla a una versión anterior

Si necesita revertir una tabla a un estado anterior a su actualización a Iceberg v3, puede usar el comando RESTORE.

RESTORE TABLE catalog.schema.table TO VERSION AS OF 1;

Limitaciones

Azure Databricks es compatible con la versión 3 de la especificación de Iceberg, con las siguientes excepciones:

  • Los valores predeterminados, incluidos los valores predeterminados de escritura y los valores predeterminados iniciales, no se admiten.
  • No se admiten los siguientes tipos de datos:
    • Tipos geoespaciales
    • Tipo desconocido
    • Marca de tiempo con precisión de nanosegundo.
  • No se admiten transformaciones de varios argumentos.