Comparteix via


¿Qué es Apache Iceberg en Azure Databricks?

Important

Tablas Iceberg administradas por Unity Catalog están disponibles en versión preliminar pública en Databricks Runtime 16.4 LTS y versiones posteriores. Las tablas extranjeras de Iceberg también están en Public Preview en Databricks Runtime 16.4 LTS y superior.

Las características de Iceberg v3 están disponibles en Beta en Databricks Runtime 17.3 y versiones posteriores. Consulte Uso de las características de Apache Iceberg v3.

Apache Iceberg es un formato de tabla de código abierto para cargas de trabajo de análisis. Admite características como la evolución del esquema, el viaje en el tiempo y la creación de particiones ocultas. Al igual que Delta Lake, Iceberg proporciona una capa de abstracción que permite transacciones ACID en datos almacenados en almacenamiento de objetos. Azure Databricks admite tablas de Iceberg que usan el formato de archivo Apache Parquet. Iceberg mantiene la atomicidad y la coherencia escribiendo nuevos archivos de metadatos para cada cambio de tabla.

Un catálogo de Iceberg es la capa de nivel más alto de la arquitectura de la tabla Iceberg. Controla las operaciones como crear, quitar y cambiar el nombre de las tablas. Su responsabilidad principal es proporcionar los metadatos actuales cuando se carga una tabla. Azure Databricks admite las tablas de Iceberg administradas por:

Todas las tablas de Iceberg de Azure Databricks siguen la especificación abierta del formato de tabla de Iceberg. Consulte las especificaciones de la tabla de Iceberg.

Creación de tablas de Iceberg en el catálogo de Unity

Las tablas Iceberg creadas en el catálogo de Unity son tablas de Iceberg administradas. Puede crear estas tablas mediante:

Las tablas de Iceberg administradas están totalmente integradas con las características de la plataforma de Azure Databricks. Unity Catalog administra tareas de ciclo de vida como la expiración de instantáneas y la compactación de archivos en estas tablas. Las tablas Iceberg administradas también admiten clustering líquido, que mejora el rendimiento de las consultas. La optimización predictiva automatiza estas tareas para reducir los costos de almacenamiento y mejorar la velocidad de las consultas. Databricks recomienda usar los clientes de Iceberg 1.9.2 y versiones posteriores para leer y escribir en el catálogo de Unity.

Leer tablas de Iceberg administradas por otros catálogos

Una tabla externa de Iceberg es una tabla de Iceberg administrada por un catálogo fuera del catálogo de Unity. El catálogo externo almacena los metadatos actuales de la tabla. Azure Databricks utiliza Lakehouse Federation para recuperar metadatos y leer la tabla desde el almacenamiento de objetos.

Las tablas externas de Iceberg son de solo lectura en Azure Databricks y tienen compatibilidad limitada con la plataforma.

Obtener acceso a tablas de Iceberg mediante sistemas externos

Puede tener acceso a todas las tablas de Iceberg en el catálogo de Unity mediante la API de catálogo REST de Iceberg. Esta API abierta admite operaciones de lectura y escritura desde motores de Iceberg externos en diferentes lenguajes y plataformas. Consulte Acceso a las tablas de Azure Databricks desde clientes de Apache Iceberg.

El catálogo REST admite el provisionamiento de credenciales, que entrega credenciales temporales a mecanismos externos para acceder al almacenamiento subyacente. Para obtener más información, consulte Venta de credenciales de Unity Catalog para el acceso a sistemas externos.

Limitaciones de la tabla de Iceberg

Las limitaciones siguientes se aplican a las tablas de Iceberg en Azure Databricks y están sujetas a cambios:

  • Las tablas de Iceberg solo admiten el formato de archivo Apache Parquet.
  • Azure Databricks es compatible con las versiones 1, 2 y 3 de la especificación de Iceberg.
    • Para ver las limitaciones específicas de la versión 3, consulte Limitaciones.
  • No se admiten las eliminaciones por posición ni las eliminaciones basadas en igualdad de Iceberg V2. En su lugar, Azure Databricks admite vectores de eliminación de Iceberg v3 para eliminaciones de nivel de fila.
  • La ramificación y el etiquetado no son compatibles. Solo se puede acceder a la rama principal cuando se leen tablas Iceberg externas.
  • Particionado:
    • La evolución de particiones solo se admite en tablas Iceberg administradas cuando se interactúa desde motores Iceberg externos.
    • Las tablas Iceberg extranjeras no admiten la evolución de particiones.
    • No se admite la creación de particiones por BINARY tipo.
  • No se admiten los siguientes tipos de datos:
    • UUID
    • Fixed(L)
    • TIME
    • Anidado STRUCT con campos obligatorios
  • Tablas Iceberg gestionadas no admiten restricciones de clave principal o clave externa.

Limitaciones de las tablas Iceberg administradas

Las limitaciones siguientes se aplican específicamente a las tablas de Iceberg administradas:

  • No se admiten filtros de fila ni máscaras de columna.
  • No se admite la búsqueda vectorial.
  • Iceberg no admite el feed de cambios de datos. Como resultado, no se admite el procesamiento incremental al leer las tablas Iceberg administradas como origen para:
    • Vistas materializadas y tablas de streaming
    • Generación de perfiles de datos
    • Tablas en línea
    • Lakebase
    • Clasificación de datos
  • Las tablas de Iceberg administradas solo se pueden crear si la optimización predictiva está habilitada para el mantenimiento de tablas.
  • El catálogo de Unity administra las siguientes propiedades de tabla y no se puede establecer manualmente:
    • write.location-provider.impl
    • write.data.path
    • write.metadata.path
    • write.format.default
    • write.delete.format.default
  • No se admite el códec de compresión para cambiar la compresión de tabla. Todas las tablas usan Zstd de forma predeterminada.
  • No se admite la creación de particiones por expresiones (por ejemplo, years(), months(), days(), hours(), ). bucket()

Limitaciones de las tablas Iceberg externas

Las siguientes limitaciones se aplican específicamente a las tablas de Iceberg externas:

  • El viaje en el tiempo solo se admite para las instantáneas de Iceberg que se han leído anteriormente en Azure Databricks (es decir, instantáneas en las que se ejecutó una SELECT instrucción).
  • El uso de funciones de transformación de cubos para la creación de particiones de Iceberg puede degradar el rendimiento de las consultas cuando se usan filtros condicionales.
  • Los productos de almacenamiento en la nube como Amazon S3 no están integrados con tablas Iceberg externas. El acceso a las tablas de Iceberg externas en Azure Databricks puede restaurar los datos archivados en niveles de almacenamiento de menor costo.
  • En clústeres de modo de acceso dedicado, las operaciones de lectura y REFRESH FOREIGN TABLE en tablas Iceberg requieren ALL PRIVILEGES.