Saltar al contenido

¿Cómo soluciono los errores de las tablas de Apache Iceberg con Athena?

4 minutos de lectura
0

Se producen errores cuando uso una tabla de Apache Iceberg con Amazon Athena.

Resolución

Sigue los pasos de solución de problemas del error que estás experimentando.

Clave de propiedad de tabla no compatible

Este error se produce cuando la cláusula TBLPROPERTIES de la instrucción CREATE TABLE o ALTER TABLE no usa una propiedad de tabla compatible. Al crear o modificar tablas de Iceberg, Athena solo permite una lista predefinida de pares clave-valor en las propiedades de la tabla.

Para resolver este problema, asegúrate de que la tabla de Iceberg utilice las propiedades de tabla compatibles.

Athena no puede generar la instrucción CREATE TABLE porque la tabla tiene propiedades no compatibles

Aparece el error «UNSUPPORTED» cuando Athena no puede reproducir la estructura de la tabla porque has utilizado la instrucción de DDL SHOW CREATE TABLE en la consulta. En su lugar, utiliza la instrucción de DDL DESCRIBE FORMATTED para mostrar las propiedades de la tabla.

Se muestra el error «TABLE_REDIRECTION_ERROR»

Este error se produce con las consultas SELECT de Athena que utilizan metadatos de tablas de Iceberg no compatibles. Asegúrate de que la consulta de Athena SELECT contenga la consulta de los metadatos de la tabla de Iceberg compatibles.

Se muestra el error «Unsupported Hive type»

Este error se produce cuando se utiliza un tipo de datos no compatible con una tabla de Iceberg. Por ejemplo, es posible que se muestre el error «SHORT, use integer» porque las tablas de Iceberg no admiten los tipos de datos tinyint o smallint de Athena. O bien, es posible que se muestre el error «CHAR, use string» porque las tablas de Iceberg no admiten los tipos de datos char de Athena.

Para resolver este problema, confirma que tu consulta de Athena utilice un tipo de datos compatible con las tablas de Iceberg.

Se muestra el error «ICEBERG_COMMIT_ERROR»

Este error puede producirse cuando varias instrucciones intentan modificar el mismo conjunto de archivos que se ejecutan en paralelo para las actualizaciones de la tabla de Iceberg. Por ejemplo, cuando hay varias instrucciones DELETE en paralelo para intentar eliminar el mismo conjunto de registros al mismo tiempo.

Para evitarlo, toma las siguientes medidas:

  • Asegúrate de que las actualizaciones de las consultas se ejecuten de forma secuencial para evitar el procesamiento de datos en paralelo.
  • Implementa un mecanismo de reintento con retroceso exponencial al actualizar las tablas de Iceberg.

Nota: Athena solo admite el bloqueo optimista de AWS Glue. Cuando modificas una tabla de Iceberg con otros métodos de bloqueo, puedes provocar la pérdida de datos e interrumpir las transacciones. Para obtener más información, consulta Bloqueo optimista en el sitio web de Apache Iceberg.

Se muestra el error «NOT_SUPPORTED: Iceberg table updates require at least format version 2»

Este error se produce al intentar la operación DELETE en una tabla de Iceberg de la versión 1. Athena crea y opera solo en tablas de Iceberg de la versión 2. Asegúrate de que la tabla de Iceberg utilice la versión 2 del motor de Athena. Si usas otro tipo de motor, establece la propiedad de tabla format-version en 2 para permitir las eliminaciones a nivel de fila. Por ejemplo, utiliza la versión 2 al escribir una tabla de Iceberg y registrarla en el Catálogo de datos de AWS Glue. Para obtener más información, consulta Eliminación de formatos en el sitio web de Apache Iceberg.

Se muestra el error «GENERIC_INTERNAL_ERROR:»

Si recibes el siguiente mensaje de error:

«GENERIC_INTERNAL_ERROR: com.amazonaws.trino.exceptions.UnrecoverableS3OperationException: com.amazonaws.services.s3.model.AmazonS3Exception: The specified key does not exist»

Este error se produce al eliminar un archivo de metadatos, como una lista de manifiestos o metadata.json. Entonces, la consulta de Athena falla. Si no puedes recuperar el archivo correctamente, restaura la tabla a una instantánea o marca de tiempo.

Nota: Debes restaurar la tabla en un entorno de Apache Spark, como AWS Glue o Amazon EMR, no en el editor de consultas de Athena.

Para restaurar la tabla a un ID de instantánea específico, ejecuta el comando roll_to_snapshot de Apache Iceberg:

CALL catalog_name.system.rollback_to_snapshot('your-db.your-table', your-snapshot-id)

Nota: Sustituye your-db, your-table y your-snapshot-id por tus valores.

Para restaurar la tabla a una marca de tiempo específica, ejecuta el comando rollback_to_timestamp de Apache Iceberg:

CALL catalog_name.system.rollback_to_timestamp('your-db.your-table', TIMESTAMP 'yyyy-mm-dd hh:mm:ss')

Nota: Sustituye your-db, your-table y yyyy-mm-dd hh:mm:ss por tus valores.

Para obtener más información, consulta rollback_to_snapshot y rollback_to_timestamp en el sitio web de Apache Iceberg.

Información relacionada

Solución de problemas en Athena

¿Cómo puedo usar Apache Iceberg con un Catálogo de datos de AWS Glue entre cuentas en Spark?

Consulta de tablas de Apache Iceberg

OFICIAL DE AWSActualizada hace 6 meses