Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Trabajando con la especificación de formato de tabla Iceberg versión 3
La última versión de la especificación de formato de tabla Iceberg de Apache es la versión 3. Esta versión presenta capacidades avanzadas para crear lagos de datos a escala de petabytes con un rendimiento mejorado y una reducción de los gastos operativos. Aborda los cuellos de botella de rendimiento más comunes que se presentan en la versión 2, especialmente en lo que respecta a las actualizaciones por lotes y las operaciones de eliminación de conformidad.
AWS proporciona soporte para los vectores de deleción y el linaje de filas, tal como se definen en la especificación de la versión 3 de Iceberg. Estas funciones están disponibles con Apache Spark en las siguientes ubicaciones. Servicios de AWS
| Servicio de AWS | Soporte para la versión 3 |
|---|---|
|
Amazon EMR versión 7.12 y versiones posteriores |
|
|
Sí |
|
|
AWS Glue: API REST Iceberg, mantenimiento de tablas |
Sí |
|
Sí |
|
|
Tablas Amazon S3: API REST de Iceberg, mantenimiento de tablas |
Sí |
|
No |
Características principales de la versión 3
Los vectores de eliminación sustituyen a los archivos de eliminación posicional que se utilizaban en la versión 2 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 se eliminan las eliminaciones en cumplimiento del Reglamento General de Protección de Datos (GDPR), y se reduce considerablemente la sobrecarga que supone mantener los datos actualizados. Organizations que procesan actualizaciones de alta frecuencia verán mejoras inmediatas en el rendimiento de escritura y reducirán los costos de almacenamiento debido a la menor cantidad de archivos pequeños.
El linaje de filas permite un seguimiento preciso de los cambios a nivel de fila. Sus sistemas posteriores pueden procesar los cambios de forma incremental, lo que acelera los flujos de datos y reduce los costos de cómputo de los flujos de trabajo de captura de datos de cambios (CDC). Esta capacidad integrada elimina la necesidad de implementar el seguimiento de cambios personalizadas.
Compatibilidad de versiones
La versión 3 mantiene la compatibilidad con versiones anteriores de las tablas de la versión 2. Los servicios de AWS admiten las tablas de la versión 2 y la versión 3 de forma simultánea, por lo que puede:
-
Ejecute consultas en las tablas de la versión 2 y la versión 3.
-
Actualice las tablas de la versión 2 existentes a la versión 3 sin tener que volver a escribir los datos.
-
Ejecute consultas de viaje en el tiempo que abarquen las instantáneas de las versiones 2 y 3.
-
Utilice la evolución del esquema y la partición oculta en todas las versiones de la tabla.
Cómo empezar con la versión 3
Requisitos previos
Antes de trabajar con las tablas de la versión 3, asegúrese de que dispone de:
-
Y Cuenta de AWS con los permisos AWS Identity and Access Management (IAM) adecuados.
-
Acceso a uno o más servicios de AWS análisis (Amazon EMR, cuadernos AWS Glue Amazon SageMaker Unified Studio o Amazon S3 Tables).
-
Un depósito de S3 para almacenar los datos y metadatos de las tablas.
-
Un bucket de mesa para empezar a utilizar Amazon S3 Tables o un bucket S3 de uso general si está creando su propia infraestructura Iceberg.
-
Un catálogo configurado. AWS Glue
Creación de tablas de la versión 3
Creación de nuevas tablas
Para crear una nueva tabla de la versión 3 de Iceberg, establezca la propiedad de la format-version tabla en 3.
Uso de 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 la versión 2 a la versión 3
Puede actualizar las tablas de la versión 2 existentes a la versión 3 de forma atómica sin tener que volver a escribir los datos.
Uso de Spark SQL:
ALTER TABLE myns.existing_table SET TBLPROPERTIES ('format-version' = '3')
importante
La versión 3 es una actualización unidireccional. Después de actualizar una tabla de la versión 2 a la versión 3, no se puede volver a degradar a la versión 2 mediante operaciones estándar.
Qué ocurre 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 añaden a los metadatos de la tabla.
Después de la actualización
-
La siguiente compactación eliminará los archivos de eliminación de la versión 2 anterior.
-
Las nuevas modificaciones utilizarán los archivos vectoriales de eliminación de la versión 3.
La actualización no rellena de forma histórica los registros de seguimiento de los cambios de linaje de las filas.
Habilitar los vectores de deleció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.
Uso del linaje de filas para el seguimiento de cambios
La versión 3 agrega automáticamente campos de metadatos de linaje de filas para realizar un seguimiento de los cambios.
Uso de 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 _row_id campo identifica de forma única cada fila y _last_updated_sequence_number registra cuándo se modificó la fila por última vez. Utilice estos campos para:
-
Identifique las filas modificadas para su procesamiento incremental.
-
Realice un seguimiento del linaje de datos para comprobar el cumplimiento.
-
Optimice las canalizaciones de los CDC.
-
Reduzca los costos de cómputo procesando solo los cambios.
Prácticas recomendadas para la versión 3
Cuándo usar la versión 3
Considere la posibilidad de actualizar a la versión 3 o comenzar con ella cuando:
-
Realiza actualizaciones o eliminaciones por lotes con frecuencia.
-
Debes cumplir con el GDPR o con los requisitos de conformidad con las eliminaciones.
-
Sus cargas de trabajo implican interrupciones de alta frecuencia.
-
Necesita flujos de trabajo de los CDC eficientes.
-
Desea reducir los costos de almacenamiento de los archivos pequeños.
-
Necesita mejores capacidades de seguimiento de cambios.
Optimizar el rendimiento de escritura
-
Habilite los vectores de eliminación para cargas de trabajo con un uso intensivo de 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
-
Utilice el linaje de filas para el procesamiento incremental.
-
Utilice el viaje en el tiempo para acceder a los datos históricos sin necesidad de copiarlos.
-
Habilite la recopilación de estadísticas para planificar mejor las consultas.
Estrategia de migración
Al migrar de la versión 2 a la versión 3, siga estas prácticas recomendadas:
-
Realice primero la prueba en un entorno que no sea de producción para validar el proceso de actualización y el rendimiento.
-
Actualice durante los períodos de baja actividad para minimizar el impacto en las operaciones simultáneas.
-
Supervise el rendimiento inicial y realice un seguimiento de las métricas después de la actualización.
-
Ejecute la compactación para consolidar los archivos eliminados después de la actualización.
-
Actualiza la documentación de tu equipo para que refleje las características de la versión 3.
Consideraciones sobre compatibilidad
-
Versiones del motor: asegúrate de que todos los motores que acceden a la tabla sean compatibles con la versión 3.
-
Herramientas de terceros: compruebe la compatibilidad de la herramienta con la versión 3 antes de realizar la actualización.
-
Estrategia de Backup: 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 la versión 3.
Resolución de problemas
Problemas comunes
Error: «No se admite el formato de la versión 3»
-
Compruebe que la versión de su motor sea compatible con la versión 3. Para obtener información específica, consulte la tabla al principio de esta sección.
-
Compruebe la compatibilidad del catálogo.
-
Asegúrese de utilizar las versiones más recientes de Servicios de AWS.
Degradación del rendimiento tras la actualización
-
Compruebe que no haya errores de compactación. Para obtener más información, consulte Registro y supervisión de tablas S3 en la documentación de Amazon S3.
-
Confirme que los vectores de eliminación estén habilitados. Se deben establecer las siguientes propiedades:
SET TBLPROPERTIES ( 'write.delete.mode' = 'merge-on-read', 'write.update.mode' = 'merge-on-read', 'write.merge.mode' = 'merge-on-read' )Puede comprobar las propiedades de la tabla con el siguiente código:
DESCRIBE FORMATTED myns.orders_v3 -
Revise su estrategia de partición. El exceso de particiones puede provocar archivos pequeños. Ejecute la siguiente consulta para obtener el tamaño medio de los archivos de la tabla:
SELECT avg(file_size_in_bytes) as avg_file_size_bytes FROM myns.orders_v3.files
Incompatibilidad con herramientas de terceros
-
Compruebe que la herramienta es compatible con la especificación de la versión 3.
-
Considere la posibilidad de mantener las tablas de la versión 2 para las herramientas no compatibles.
-
Póngase en contacto con el proveedor de la herramienta para conocer el calendario de soporte de la versión 3.
Obtener ayuda
-
Para problemas Servicio de AWS específicos, póngase en contacto con AWS Support
. -
Para obtener ayuda de la comunidad de Iceberg, usa el canal de Slack de Iceberg
.
Precios
Disponibilidad.
La compatibilidad con la versión 3 de la especificación de formato de tabla Iceberg está disponible en todos los Regiones de AWS
lugares en los que funcionan las tablas Amazon EMR AWS Glue AWS Glue Data Catalog,, y S3. Para ver la disponibilidad por región, consulte Servicios de AWS por