Nota
L'accés a aquesta pàgina requereix autorització. Pots provar d'iniciar sessió o canviar de directori.
L'accés a aquesta pàgina requereix autorització. Pots provar de canviar directoris.
En este artículo se ofrecen detalles para habilitar la lectura de Iceberg en tablas almacenadas con Delta Lake en Azure Databricks. Esta característica requiere Databricks Runtime 14.3 LTS o superior.
Nota:
Esta funcionalidad se llamó anteriormente Formato universal de Delta Lake (UniForm).
Puede configurar una conexión externa para que Unity Catalog actúe como un catálogo de Iceberg. Consulte Acceso a las tablas de Azure Databricks desde clientes de Apache Iceberg.
¿Cómo funcionan las lecturas de Apache Iceberg (UniForm)?
Delta Lake y Apache Iceberg consisten de archivos de datos Parquet y una capa de metadatos. Al habilitar las lecturas de Iceberg, se configuran las tablas para generar automáticamente metadatos de Incremental de forma asincrónica, sin volver a escribir datos, de modo que los clientes de Incremental puedan leer tablas Delta escritas por Azure Databricks. Una sola copia de los archivos de datos proporciona varios formatos.
Importante
- Las tablas con lecturas de Iceberg habilitadas usan Zstandard en lugar de Snappy como el códec de compresión para los archivos de datos Parquet subyacentes.
- La generación de metadatos de Iceberg se ejecuta de forma asincrónica en el sistema de cómputo utilizado para escribir datos en tablas Delta, lo que podría aumentar el uso de recursos del controlador.
- Para obtener documentación sobre la característica heredada de tabla
IcebergCompatV1de UniForm, vea UniForm IcebergCompatV1 heredado.
Requisitos
Para habilitar las lecturas de Iceberg, se deben cumplir los siguientes requisitos:
- La tabla Delta debe registrarse en el Unity Catalog. Se admiten tablas administradas y externas.
- La tabla debe tener habilitada la asignación de columnas. Consulte Cambio de nombre y eliminación de columnas con la asignación de columnas de Delta Lake.
- La tabla Delta debe tener un
minReaderVersion>valor = 2 yminWriterVersion>= 7. Consulte Compatibilidad y protocolos de características de Delta Lake. - Las escrituras en la tabla deben usar Databricks Runtime 14.3 LTS o superior.
Nota:
No se pueden habilitar vectores de eliminación en una tabla con lecturas de Iceberg habilitadas.
Usa REORG para deshabilitar y purgar vectores de eliminación mientras habilitas las lecturas de Iceberg en una tabla existente con vectores de eliminación habilitados. Consulte Habilitación o actualización de la compatibilidad de lectura de Iceberg mediante REORG.
Activar la lectura de Iceberg (UniForm)
Importante
Cuando se habilitan las lecturas de Iceberg, la característica IcebergCompatV2 de protocolo de escritura se agrega a la tabla. Solo los clientes que admiten esta característica de tabla pueden escribir en tablas con lecturas de Iceberg habilitadas. En Azure Databricks, debe usar Databricks Runtime 14.3 LTS o superior para escribir en tablas habilitadas.
IcebergCompatV2 depende de la asignación de columnas. Una vez que IcebergCompatV2 está habilitada para una tabla, no se puede quitar la característica de tabla columnMapping.
Para desactivar las lecturas de Iceberg, basta con desajustar la propiedad delta.universalFormat.enabledFormats tabla. Las actualizaciones a las versiones del protocolo de lectura y escritura de Delta Lake no se pueden deshacer.
Debe establecer las siguientes propiedades de tabla para habilitar las lecturas de Iceberg:
'delta.enableIcebergCompatV2' = 'true'
'delta.universalFormat.enabledFormats' = 'iceberg'
Una vez que habilitas las lecturas de Iceberg por primera vez, comienza la generación asincrónica de metadatos. Esta tarea debe completarse antes de que los clientes externos puedan consultar la tabla mediante Iceberg. Vea Comprobación del estado de generación de metadatos de Iceberg.
Para obtener una lista de limitaciones, consulte Limitaciones.
Habilitación de las lecturas de Iceberg durante la creación de tablas
La asignación de columnas debe estar habilitada para usar lecturas de Iceberg y no se puede quitar una vez habilitada. Esto sucede automáticamente si habilita las lecturas de Iceberg durante la creación de la tabla, como en el ejemplo siguiente:
CREATE TABLE T(c1 INT) TBLPROPERTIES(
'delta.columnMapping.mode' = 'name',
'delta.enableIcebergCompatV2' = 'true',
'delta.universalFormat.enabledFormats' = 'iceberg');
Habilitación de las lecturas de Iceberg en una tabla existente
En Databricks Runtime 15.4 LTS y versiones posteriores, puede habilitar o actualizar las lecturas de Iceberg en una tabla existente mediante la sintaxis siguiente:
ALTER TABLE table_name SET TBLPROPERTIES(
'delta.columnMapping.mode' = 'name',
'delta.enableIcebergCompatV2' = 'true',
'delta.universalFormat.enabledFormats' = 'iceberg');
Habilitar o actualizar la compatibilidad de lectura para Iceberg mediante REORG
Puede utilizar REORG para habilitar lecturas con Iceberg y reescribrir los archivos de datos subyacentes, tal como se muestra en el siguiente ejemplo:
REORG TABLE table_name APPLY (UPGRADE UNIFORM(ICEBERG_COMPAT_VERSION=2));
Use REORG si alguno de los siguientes valores es true:
- La tabla tiene habilitados vectores de eliminación.
- Anteriormente habilitó la versión
IcebergCompatV1de UniForm Iceberg. - Necesitas leer desde motores de Iceberg que no admiten archivos Parquet con estilo Hive, como Athena o Redshift.
¿Cuándo se produce la generación de metadatos de Iceberg?
Azure Databricks desencadena la generación de metadatos de forma asincrónica después de que se complete una transacción de escritura de Delta Lake. Este proceso de generación de metadatos usa el mismo proceso que completó la transacción de Delta.
Nota:
También puede desencadenar manualmente la generación de metadatos de Iceberg. Vea Desencadenar manualmente la conversión de metadatos de Iceberg.
Para evitar latencias de escritura asociadas a la generación de metadatos, las tablas Delta con confirmaciones frecuentes pueden agrupar varias confirmaciones de Delta en una sola confirmación a los metadatos de Iceberg.
Delta Lake garantiza que solo haya un proceso de generación de metadatos en curso en un recurso de proceso determinado. Las confirmaciones que desencadenarían un segundo proceso concurrente de generación de metadatos se confirman con éxito en Delta, pero no inician la generación asincrónica de metadatos de Iceberg. Esto evita la latencia en cascada para la generación de metadatos para cargas de trabajo con confirmaciones frecuentes (segundos a minutos entre confirmaciones).
Vea Las versiones de la tabla Delta y Iceberg.
Versiones de tabla Delta y Iceberg
Delta Lake y Iceberg permiten consultas de viaje de tiempo mediante versiones de tabla o marcas de tiempo almacenadas en metadatos de tabla.
En términos generales, las versiones de la tabla Delta no se alinean con las versiones de Iceberg ni por la marca de tiempo de confirmación ni por el identificador de versión. Para comprobar a qué versión de una tabla Delta se corresponde una versión determinada de una tabla de Iceberg, puede utilizar las propiedades correspondientes de la tabla. Vea Comprobación del estado de generación de metadatos de Iceberg.
Vea Comprobación del estado de generación de metadatos de Iceberg.
Al habilitar las lecturas de Iceberg en una tabla, se agregan los siguientes campos a los metadatos del Catálogo de Unity y la tabla de Iceberg para realizar un seguimiento del estado de generación de metadatos.
| Campo de metadatos | Descripción |
|---|---|
converted_delta_version |
La versión más reciente de la tabla Delta para la que se generaron correctamente los metadatos Iceberg. |
converted_delta_timestamp |
Marca de tiempo de la confirmación Delta más reciente para la que se generaron correctamente los metadatos Iceberg. |
En Azure Databricks, puede revisar estos campos de metadatos mediante una de las siguientes opciones:
- Revisión de la sección
Delta Uniform Icebergque devuelveDESCRIBE EXTENDED table_name. - Revisión de metadatos de tabla con Catalog Explorer.
Consulte la documentación del cliente lector de Iceberg para saber cómo revisar las propiedades de la tabla fuera de Azure Databricks. En el caso de Apache Spark de OSS, puede ver estas propiedades con la sintaxis siguiente:
SHOW TBLPROPERTIES <table-name>;
Desencadenar manualmente la conversión de metadatos de Iceberg
Puede desencadenar manualmente la generación de metadatos Iceberg para la versión más reciente de la tabla Delta. Esta operación se ejecuta de forma sincrónica, lo que significa que cuando se completa, el contenido de la tabla disponible en Iceberg refleja la última versión de la tabla Delta disponible cuando se inició el proceso de conversión.
Esta operación no debe ser necesaria en condiciones normales, pero puede ayudar si encuentra lo siguiente:
- Un clúster finaliza antes de que la generación automática de metadatos se realice correctamente.
- Un error o error de trabajo interrumpe la generación de metadatos.
- Un cliente que no admite la generación de metadatos de UniForm Iceberg escribe en la tabla Delta.
Use la siguiente sintaxis para desencadenar manualmente la generación de metadatos de Iceberg.
MSCK REPAIR TABLE <table-name> SYNC METADATA
Consulte REPAIR TABLE.
Leer Iceberg utilizando una ruta de acceso de metadatos JSON
Algunos clientes de Iceberg requieren que proporcione una ruta de acceso a los archivos de metadatos con versiones para registrar tablas externas de Iceberg. Cada vez que Azure Databricks convierte una nueva versión de la tabla Delta en Iceberg, crea un nuevo archivo JSON de metadatos.
Los clientes que usan rutas de acceso JSON de metadatos para configurar Iceberg incluyen BigQuery. Consulte la documentación del cliente de lector de Iceberg para obtener más información sobre la configuración.
Delta Lake almacena metadatos de Iceberg en el directorio de tabla con el siguiente patrón:
<table-path>/metadata/<version-number>-<uuid>.metadata.json
En Azure Databricks, puede revisar esta ubicación de metadatos mediante una de las siguientes opciones:
- Revisión de la sección
Delta Uniform Icebergque devuelveDESCRIBE EXTENDED table_name. - Revisión de metadatos de tabla con Catalog Explorer.
Importante
Es posible que los clientes lectores de Iceberg basados en rutas de acceso requieran actualizar y actualizar manualmente las rutas JSON de metadatos para leer las versiones actuales de la tabla. Es posible que los usuarios encuentren errores al consultar las tablas de Iceberg con versiones obsoletas, ya que los archivos de datos Parquet se quitan de la tabla Delta con VACUUM.
Limitaciones
Existen las siguientes limitaciones para todas las tablas con lecturas de Iceberg habilitadas:
- Las lecturas de Iceberg v2 no funcionan en tablas con vectores de eliminación habilitados. Sin embargo, Apache Iceberg v3 admite vectores de eliminación. Consulte Utilice las características de Apache Iceberg v3 y ¿Qué son los vectores de eliminación?
- Se debe acceder a la tabla delta por nombre (no por ruta) para desencadenar automáticamente la generación de metadatos de iceberg.
- No se pueden habilitar las lecturas de Iceberg en vistas materializadas ni en tablas de streaming.
- Las tablas delta con lecturas de Iceberg habilitadas no admiten tipos
VOID. - El soporte para el cliente de Iceberg es meramente informativo. No se admiten escrituras.
- Es posible que los clientes lectores de Iceberg tengan limitaciones individuales, independientemente de la compatibilidad de Azure Databricks con las lecturas de Iceberg. Consulte la documentación del cliente elegido.
- Los destinatarios de Delta Sharing pueden leer tablas Delta con la función de lectura de Iceberg habilitada, como si fueran tablas de Iceberg, utilizando la API del Catálogo REST de Iceberg. Esta característica está en versión preliminar pública. Consulte Habilitación del uso compartido en clientes externos de Iceberg.
- Algunas características de tabla de Delta Lake usadas por las lecturas de Iceberg no son compatibles con algunos clientes de Delta Sharing. Consulte ¿Qué es Delta Sharing?
La fuente de cambio de datos funciona para los clientes de Delta cuando se habilitan las lecturas de Iceberg, pero no tiene soporte en Iceberg.