Consultar las tablas de Delta Lake - Amazon Athena

Consultar las tablas de Delta Lake

Delta Lake es un formato de tabla para el análisis de macrodatos. Puede usar Amazon Athena para leer directamente las tablas de Delta Lake almacenadas en Amazon S3 sin tener que generar archivos de manifiesto ni ejecutar la instrucción MSCK REPAIR.

El formato de Delta Lake almacena los valores mínimo y máximo por columna de cada archivo de datos. La implementación de Athena utiliza esta información para permitir omitir archivos en los predicados a fin de evitar que se tengan en cuenta los archivos no deseados.

Condiciones y limitaciones

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

  • Solo tablas con catálogo de AWS Glue: la compatibilidad nativa de Delta Lake solo se admite a través de tablas registradas con AWS Glue. Si tiene una tabla de Delta Lake registrada en otro metaalmacén, puede conservarla y tratarla como su metaalmacén principal. Como los metadatos de Delta Lake se almacenan en el sistema de archivos (por ejemplo, en Amazon S3) y no en el metaalmacén, Athena solo requiere la propiedad de ubicación de AWS Glue para leer las tablas de Delta Lake.

  • Solo motor V3: las consultas de Delta Lake solo se admiten en la versión 3 del motor Athena. Debe asegurarse de que el grupo de trabajo que cree esté configurado para utilizar la versión 3 del motor Athena.

  • No hay compatibilidad con viajes en el tiempo: no hay compatibilidad con consultas que utilicen las capacidades de viaje en el tiempo de Delta Lake.

  • Solo lectura: las instrucciones DML de escritura como UPDATE, INSERT o DELETE no se admiten.

  • Sin integración de Lake Formation: la integración de Lake Formation no es compatible con las tablas de Delta Lake.

  • Compatibilidad con DDL limitada: se admiten las siguientes instrucciones DDL: CREATE EXTERNAL TABLE, SHOW COLUMNS, SHOW TBLPROPERTIES, SHOW PARTITIONS, SHOW CREATE TABLE y DESCRIBE TABLE. Para obtener información sobre el uso de la instrucción CREATE EXTERNAL TABLE, consulte la sección Introducción.

Tipos de datos de columnas sin particiones compatibles

En el caso de las columnas sin particiones, se admiten todos los tipos de datos que admite Athena excepto CHAR (CHAR no se admite en el propio protocolo de Delta Lake). Los tipos de datos admitidos incluyen:

boolean tinyint smallint integer bigint double float decimal varchar string binary date timestamp array map struct

Tipos de datos de columnas de particiones compatibles

Para las columnas de particiones, Athena admite tablas con los siguientes tipos de datos:

boolean integer smallint tinyint bigint decimal float double date timestamp varchar

Para más información sobre los tipos de datos en Athena, consulte Tipos de datos en Amazon Athena.

Introducción

Para poder consultarla, su tabla de Delta Lake debe existir en AWS Glue. Si la tabla está en Amazon S3, pero no en AWS Glue, ejecute una instrucción CREATE EXTERNAL TABLE con la siguiente sintaxis. Si la tabla ya existe en AWS Glue (por ejemplo, porque está usando Apache Spark u otro motor con AWS Glue), puede omitir este paso.

CREATE EXTERNAL TABLE [db_name.]table_name LOCATION 's3://DOC-EXAMPLE-BUCKET/your-folder/' TBLPROPERTIES ('table_type' = 'DELTA')

Tenga en cuenta la omisión de las definiciones de columnas, la biblioteca SerDe y otras propiedades de tablas. A diferencia de las tablas de Hive tradicionales, los metadatos de las tablas de Delta Lake se deducen del registro de transacciones de Delta Lake y se sincronizan directamente con AWS Glue.

nota

En el caso de las tablas de Delta Lake, no se permiten instrucciones CREATE TABLE que incluyan más que las propiedades LOCATION y table_type.

Lectura de las tablas de Delta Lake

Para consultar una tabla de Delta Lake, utilice la sintaxis SELECT SQL estándar:

[ WITH with_query [, ...] ]SELECT [ ALL | DISTINCT ] select_expression [, ...] [ FROM from_item [, ...] ] [ WHERE condition ] [ GROUP BY [ ALL | DISTINCT ] grouping_element [, ...] ] [ HAVING condition ] [ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] select ] [ ORDER BY expression [ ASC | DESC ] [ NULLS FIRST | NULLS LAST] [, ...] ] [ OFFSET count [ ROW | ROWS ] ] [ LIMIT [ count | ALL ] ]

Para obtener más información acerca de la sintaxis SELECT, consulte SELECT en la documentación de Athena.

El formato de Delta Lake almacena los valores mínimo y máximo por columna de cada archivo de datos. Athena utiliza esta información para permitir omitir archivos en los predicados a fin de evitar que se tengan en cuenta los archivos innecesarios.

Sincronización de metadatos de Delta Lake

Athena sincroniza los metadatos de la tabla, incluidos el esquema, las columnas de partición y las propiedades de la tabla, con AWS Glue si usa Athena para crear su tabla de Delta Lake. A medida que pasa el tiempo, estos metadatos pueden perder su sincronización con los metadatos de la tabla subyacente en el registro de transacciones. Para mantener su tabla actualizada, puede utilizar el rastreador de AWS Glue de tablas de Delta Lake. Para obtener más información, consulte Introducing native Delta Lake table support with AWS Glue crawlers (Presentación de la compatibilidad nativa de tablas de Delta Lake con rastreadores de AWS Glue) en el blog sobre macrodatos de AWS y Programación de un rastreador de AWS Glue en la guía para desarrolladores de AWS Glue.