Trabajo con Apache Iceberg V3 - Amazon Simple Storage Service

Trabajo con Apache Iceberg V3

La versión 3 (V3) de Apache Iceberg es la última versión de la especificación de formato de tablas de Apache Iceberg e incorpora funciones avanzadas para crear lagos de datos a escala de petabytes con un rendimiento mejorado y una sobrecarga operativa reducida. V3 aborda los cuellos de botella de rendimiento más comunes que se presentan con V2, especialmente en lo que respecta a las actualizaciones por lotes y las eliminaciones por cumplimiento de normas.

AWS proporciona compatibilidad con los vectores de eliminación y el linaje de filas, tal como se define en la especificación de la versión 3 (V3) de Apache Iceberg. Estas características están disponibles con Apache Spark en Amazon EMR 7.12, AWS Glue ETL, Blocs de notas de Estudio unificado de Amazon SageMaker y tablas de Apache Iceberg en el Catálogo de datos de AWS Glue, incluidas las Tablas de Amazon S3.

Características clave en V3

Vectores de eliminación

Sustituye los archivos de eliminación posicional de V2 por un formato binario eficiente almacenado como archivos Puffin. De este modo, se elimina la amplificación de escritura que se produce al realizar actualizaciones aleatorias por lotes y las eliminaciones en cumplimiento del RGPD, lo que reduce considerablemente la sobrecarga que supone mantener los datos actualizados. Las organizaciones que procesen actualizaciones de alta frecuencia experimentarán mejoras inmediatas en el rendimiento de escritura y una reducción de los costos de almacenamiento gracias a una menor cantidad de archivos pequeños.

Linaje de filas

Permite un seguimiento preciso de los cambios por fila. Los sistemas posteriores pueden procesar los cambios de forma gradual, lo que acelera las canalizaciones de datos y reduce los costos informáticos de los flujos de trabajo de captura de datos sobre cambios (CDC). Esta función integrada elimina la necesidad de implementaciones de seguimiento de cambios personalizadas.

Compatibilidad de versiones

V3 mantiene la compatibilidad con versiones anteriores de las tablas de V2. Los servicios de AWS admiten tablas V2 y V3 simultáneamente, lo que permite:

  • Ejecutar consultas en las tablas V2 y V3

  • Actualizar las tablas V2 existentes a V3 sin tener que volver a escribir los datos

  • Ejecutar consultas sobre viajes en el tiempo que abarquen instantáneas de V2 y V3

  • Utilizar la evolución del esquema y la partición oculta en todas las versiones de la tabla

importante

V3 es una actualización unidireccional. Una vez que una tabla se actualiza de V2 a V3, no se puede volver a bajar la categoría a V2 mediante las operaciones estándar.

Introducción a V3

Requisitos previos

Antes de trabajar con las tablas de V3, asegúrese de que dispone de:

  • Una cuenta de AWS con los permisos de IAM adecuados

  • Acceso a uno o más servicios de análisis de AWS (EMR, Glue, blocs de notas de Estudio unificado de Amazon SageMaker o tablas de S3)

  • Un bucket de S3 para almacenar datos y metadatos de tablas

  • Un bucket de tabla para empezar con tablas de S3 o un bucket de S3 de uso general si está creando su propia infraestructura de Iceberg

  • Se ha configurado el catálogo de AWS Glue

Creación de tablas de V3

Creación de tablas de V3 nuevas

Para crear una nueva tabla de Iceberg V3, establezca la propiedad de la tabla de versión de formato en 3.

Con Spark SQL:

CREATE TABLE IF NOT EXISTS myns.orders_v3 ( order_id bigint, customer_id string, order_date date, total_amount decimal(10,2), status string, created_at timestamp ) USING iceberg TBLPROPERTIES ( 'format-version' = '3' )

Actualización de las tablas de V2 a V3

Puede actualizar las tablas de V2 existentes a V3 sin tener que volver a escribir los datos.

Con Spark SQL:

ALTER TABLE myns.existing_table SET TBLPROPERTIES ('format-version' = '3')
importante

V3 es una actualización unidireccional. Una vez que una tabla se actualiza de V2 a V3, no se puede volver a bajar la categoría a V2 mediante las operaciones estándar.

Qué sucede durante la actualización:

  • Se crea una nueva instantánea de metadatos de forma atómica

  • Los archivos de datos de Parquet existentes se reutilizan

  • Los campos de linaje de filas se agregan a los metadatos de la tabla

  • La siguiente compactación eliminará los archivos de eliminación V2 antiguos

  • Las nuevas modificaciones utilizarán los archivos vectoriales de eliminación V3

  • La actualización no rellena históricamente los registros de seguimiento de los cambios de linaje de las filas

Habilitación de vectores de eliminación

Para aprovechar los vectores de eliminación para actualizar, eliminar y fusionar, configure el modo de escritura.

Con Spark SQL:

ALTER TABLE myns.orders_v3 SET TBLPROPERTIES ('format-version' = '3', 'write.delete.mode' = 'merge-on-read', 'write.update.mode' = 'merge-on-read', 'write.merge.mode' = 'merge-on-read' )

Esta configuración garantiza que las operaciones de actualización, eliminación y fusión creen archivos vectoriales de eliminación en lugar de reescribir archivos de datos completos.

Aprovechamiento del linaje de filas para el seguimiento de los cambios

V3 agrega automáticamente campos de metadatos de linaje de filas para realizar un seguimiento de los cambios.

Con Spark SQL:

# Query with parameter value provided last_processed_sequence = 47 SELECT id, data, _row_id, _last_updated_sequence_number FROM myns.orders_v3 WHERE _last_updated_sequence_number > :last_processed_sequence

El campo _row_id identifica de forma única cada fila, mientras que _last_updated_sequence_number registra cuándo se modificó la fila por última vez. Utilice estos campos para:

  • Identificar las filas modificadas para su procesamiento incremental

  • Realizar un seguimiento del linaje de datos para comprobar el cumplimiento

  • Optimización de las canalizaciones de CDC

  • Reducción de los costos informáticos procesando solo los cambios

Prácticas recomendadas para V3

Cuándo se debe usar V3

Considere la posibilidad de actualizar a V3 o comenzar con ella cuando:

  • Realiza actualizaciones o eliminaciones por lotes con frecuencia

  • Debe cumplir con el GDPR o con los requisitos de cumplimiento de eliminación

  • Las cargas de trabajo implican interrupciones de alta frecuencia

  • Necesita flujos de trabajo de CDC eficientes

  • Desea reducir los costos de almacenamiento de los archivos pequeños

  • Necesita mejores capacidades de seguimiento de cambios

Optimización del rendimiento de escritura

  • Habilite los vectores de eliminación para cargas de trabajo que requieren muchas actualizaciones:

    SET TBLPROPERTIES ( 'write.delete.mode' = 'merge-on-read', 'write.update.mode' = 'merge-on-read', 'write.merge.mode' = 'merge-on-read' )
  • Configure los tamaños de archivo adecuados:

    SET TBLPROPERTIES ( 'write.target-file-size-bytes' = '536870912' — 512 MB )

Optimización del rendimiento de lectura

  • Aproveche el linaje de filas para el procesamiento incremental

  • Utilice los viajes temporales para acceder a los datos históricos sin necesidad de copiarlos

  • Habilite la recopilación de estadísticas para una mejor planificación de las consultas

Estrategia de migración

Cuando se migra de V2 a V3:

  • Realice primero las pruebas fuera de producción: valide el proceso de actualización y el rendimiento

  • Actualice durante los periodos de baja actividad: minimice el impacto en las operaciones simultáneas

  • Supervise el rendimiento inicial: realice un seguimiento de las métricas después de la actualización

  • Ejecute la compactación: consolide los archivos de eliminación después de la actualización

  • Actualización de la documentación: refleje las características de V3 en la documentación del equipo

Consideraciones sobre compatibilidad

  • Versiones del motor: asegúrese de que todos los motores que acceden a la tabla sean compatibles con V3

  • Herramientas de terceros: compruebe la compatibilidad con la V3 antes de realizar la actualización

  • Estrategia de copia de seguridad: pruebe los procedimientos de recuperación basados en instantáneas

  • Supervisión: actualice los paneles de supervisión para las métricas específicas de V3

Solución de problemas

Problemas comunes

Error: “No se admite el formato de la versión 3”
  • Compruebe que la versión del motor sea compatible con V3

    La compatibilidad de V3 para los servicios de AWS de Amazon es el siguiente:

    Servicio Compatibilidad de V3
    EMR Spark Versión 7.12+
    AWS Glue ETL
    Blocs de notas de Estudio unificado de Amazon SageMaker
    AWS Glue: API de REST de Iceberg, mantenimiento de tablas
    Tablas de Amazon S3: API de REST de Iceberg, mantenimiento de tablas
    Amazon Athena (Trino) No
  • Comprobación de la compatibilidad del catálogo

  • Garantice las versiones del servicio de AWS más recientes

Degradación del rendimiento tras la actualización
  • Compruebe que no haya errores de compactación. Consulte Registro y supervisión de tablas de S3 para obtener más información.

  • Compruebe si los vectores de eliminación están habilitados. Asegúrese de que se establecen las siguientes propiedades:

    SET TBLPROPERTIES ( 'write.delete.mode' = 'merge-on-read', 'write.update.mode' = 'merge-on-read', 'write.merge.mode' = 'merge-on-read' )
  • Puede verificar las propiedades de la tabla con el siguiente código:

    DESCRIBE FORMATTED myns.orders_v3
  • Revise la estrategia de partición. El exceso de particiones puede provocar archivos pequeños. Ejecute la siguiente consulta para obtener el tamaño medio de archivo de la tabla:

    SELECT avg(file_size_in_bytes) as avg_file_size_bytes FROM myns.orders_v3.files
Incompatibilidad con herramientas de terceros
  • Verifique que la herramienta sea compatible con la especificación de V3

  • Consideración de la posibilidad de mantener las tablas de V2 para las herramientas no compatibles

  • Contacte con el proveedor de la herramienta para obtener información sobre el calendario de asistencia de V3

Obtener ayuda

  • Asistencia de AWS: contacte con el servicio de asistencia de AWS para problemas específicos del servicio

  • Comunidad de Apache Iceberg: Iceberg Slack

  • Documentación de AWS: documentación de análisis de AWS

Precios

Disponibilidad

La compatibilidad con Apache Iceberg V3 está disponible en todas las regiones de AWS en las que operan Amazon EMR, el catálogo de datos de AWS Glue, AWS Glue ETL y tablas de S3.

Recursos adicionales