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 Sí Blocs de notas de Estudio unificado de Amazon SageMaker Sí AWS Glue: API de REST de Iceberg, mantenimiento de tablas Sí Tablas de Amazon S3: API de REST de Iceberg, mantenimiento de tablas Sí 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
-
Amazon EMR: Precios informáticos y almacenamiento
-
AWS Glue: precios de ejecución de trabajo y catálogo de datos
-
Tablas de S3: precios de almacenamiento y solicitud
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.