Uso de tablas de Apache Iceberg - Amazon Athena

Uso de tablas de Apache Iceberg

Athena admite consultas de lectura, viaje en el tiempo, escritura y DDL para tablas de Apache Iceberg que utilizan el formato Apache Parquet para los datos y el catálogo de AWS Glue para su almacén de metadatos.

Apache Iceberg es un formato de tabla abierto para conjuntos de datos analíticos muy grandes. Iceberg administra grandes colecciones de archivos como tablas y admite operaciones modernas de lago de datos analíticos, como las consultas de inserción, actualización y eliminación de registros, y viajes en el tiempo. La especificación de Iceberg permite la evolución de las tablas sin problemas, como la evolución de esquemas y particiones, y se ha diseñado para el uso optimizado en Amazon S3. Iceberg también ayuda a garantizar la corrección de los datos en escenarios de escritura simultanea.

Para más información sobre Apache Iceberg, consulte https://iceberg.apache.org/.

Consideraciones y limitaciones

La compatibilidad de Athena con las tablas de Iceberg tiene las siguientes limitaciones:

  • Tablas de AWS Glue Catalog únicamente: solo las tablas de Iceberg creadas con AWS Glue Catalog basado en las especificaciones definidas por la implementación de Glue Catalog de código abierto son compatibles con Athena.

  • Soporte de bloqueo de tablas de AWS Glue únicamente: a diferencia de la implementación del catálogo Glue de código abierto, que admite el bloqueo personalizado de complementos, Athena admite el bloqueo optimista de AWS Glue únicamente. El uso de Athena para modificar una tabla de Iceberg con cualquier otra implementación de bloqueo provocará posibles pérdidas de datos y la interrupción de transacciones.

  • Formatos de archivo compatibles: la compatibilidad con el formato de archivo Iceberg en Athena depende de la versión del motor de Athena, como se muestra en la siguiente tabla.

    Versión del motor Athena Parquet ORC Avro
    2 No No
    3
  • Tablas Iceberg v2: Athena solo crea y opera con tablas de Iceberg v2. Para ver la diferencia entre las tablas v1 y v2, consulte Format version changes (Cambios de versión de formato) en la documentación de Apache Iceberg.

  • Visualización de tipos de hora sin zona horaria: la hora y la marca de tiempo sin tipos de zona horaria se muestran en UTC. Si la zona horaria no se especifica en una expresión de filtro en una columna de hora, se usa UTC.

  • Precisión de los datos relacionados con la marca de tiempo: si bien Iceberg admite una precisión de microsegundos para el tipo de datos de marca de tiempo, Athena solo admite una precisión de milisegundos para las marcas de tiempo tanto en las lecturas como en las escrituras. En el caso de los datos en las columnas relacionadas con la hora que se reescriben durante las operaciones de compactación manual, Athena solo retiene la precisión en milisegundos.

  • Operaciones no admitidas: las siguientes operaciones de Athena no se admiten para las tablas de Iceberg.

  • Vistas: se utiliza CREATE VIEW para crear vistas de Athena como se describe en Uso de vistas. Si está interesado en utilizar la especificación de vistas de Iceberg para crear vistas, póngase en contacto con athena-feedback@amazon.com.

  • Comandos de administración de TTF no compatibles en AWS Lake Formation: si bien puede utilizar Lake Formation a fin de administrar los permisos de acceso de lectura para los formatos de tabla de transacciones (TTF) como Apache Iceberg, Apache Hudi y Linux Foundation Delta Lake, no puede utilizar Lake Formation a fin de administrar los permisos de operaciones como VACUUM, MERGE, UPDATE o OPTIMIZE con estos formatos de tabla. Para obtener más información sobre la integración de Lake Formation con Athena, consulte Uso de AWS Lake Formation con Amazon Athena en la Guía para desarrolladores de AWS Lake Formation.

  • Partición por campos anidados: no se admite la partición por campos anidados. Si lo intenta, aparecerá el mensaje NOT_SUPPORTED: No se admite la partición por campos anidados: column_name.nested_field_name.

  • No se admite la omisión de objetos de S3 Glacier: si los objetos de la tabla de Apache Iceberg se encuentran en una clase de almacenamiento de Amazon S3 Glacier, establecer la propiedad de la tabla read_restored_glacier_objects en false no tendrá ningún efecto.

    Suponga, por ejemplo, que ejecuta el siguiente comando:

    ALTER TABLE table_name SET TBLPROPERTIES ('read_restored_glacier_objects' = 'false')

    En el caso de las tablas de Iceberg y Delta Lake, el comando produce el error Clave de propiedad de tabla no compatible: read_restored_glacier_objects. En el caso de las tablas de Hudi, el comando ALTER TABLE no produce ningún error, pero los objetos de Amazon S3 Glacier siguen sin omitirse. Al ejecutar consultas SELECT después del comando ALTER TABLE, se siguen devolviendo todos los objetos.

Si desea que Athena admita una característica en particular, envíe sus comentarios a athena-feedback@amazon.com.