Creación de tablas en Athena - Amazon Athena

Creación de tablas en Athena

Para crear tablas, puede ejecutar instrucciones DDL en la consola de Athena. Utilice el formulario Crear tabla de Athena o utilice un controlador JDBC u ODBC. Athena utiliza Apache Hive para definir las tablas y crear bases de datos, que son básicamente un espacio de nombres lógico de tablas. Athena admite una variedad de bibliotecas de serializador-deserializador (SerDe) para crear tablas para formatos de datos específicos. Para obtener una lista de las bibliotecas SerDe compatibles, consulte Elección de un valor de SerDe para los datos.

Al crear una base de datos y una tabla en Athena, solo describe el esquema y la ubicación donde se encuentran los datos de la tabla en Amazon S3 para efectuar la consulta en el momento de la lectura. Athena no modifica los datos en Amazon S3. Por lo tanto, base de datos y tabla tienen un significado ligeramente distinto al habitual en los sistemas de bases de datos relacionales tradicionales, ya que los datos no se almacenan junto con la definición del esquema de la base de datos y la tabla.

Athena almacena el esquema en el AWS Glue Data Catalog y lo utiliza para leer los datos cuando se consulta la tabla mediante SQL. Este enfoque de esquema en lectura, que proyecta un esquema en los datos cuando se ejecuta una consulta, elimina la necesidad de cargar o transformar los datos.

Consideraciones y limitaciones

A continuación, se indican algunas limitaciones y consideraciones importantes para las tablas de Athena.

Consideraciones sobre Amazon S3

Al crear una tabla, debe especificar la ubicación de un bucket de Amazon S3 para los datos subyacentes con la cláusula LOCATION. Considere lo siguiente:

  • Athena solo puede consultar la versión más reciente de datos en un bucket de Amazon S3 con control de versiones y no puede consultar versiones anteriores de los datos.

  • Debe disponer de los permisos para trabajar con los datos de la ubicación de Amazon S3. Para obtener más información, consulte Control del acceso a Amazon S3 desde Athena.

  • Athena permite consultar los objetos almacenados con varias clases de almacenamiento en el mismo bucket especificado por la cláusula LOCATION. Por ejemplo, puede consultar los datos en objetos que se almacenan en diferentes clases de almacenamiento (Standard y Standard-IA e Intelligent-Tiering) en Amazon S3.

  • Athena admite los buckets de pago por solicitante. Para obtener información sobre cómo habilitar pagos por solicitante para buckets con datos de origen que desea consultar en Athena, consulte Creación de un grupo de trabajo.

  • Puede utilizar Athena para consultar objetos restaurados de las clases de almacenamiento de Amazon S3 S3 Glacier Flexible Retrieval (anteriormente Glacier) y S3 Glacier Deep Archive, pero debe habilitar esta capacidad por cada tabla de manera individual. Si no habilita la característica en una tabla antes de ejecutar una consulta, Athena omite todos los objetos de S3 Glacier Flexible Retrieval y S3 Deep Archive de la tabla durante la ejecución de la consulta. Para obtener más información, consulte Consulta de objetos de Amazon S3 Glacier restaurados.

    Para obtener información sobre las clases de almacenamiento, consulte Clases de almacenamiento, Cambio de la clase de almacenamiento de un objeto en Amazon S3, Transición a la clase de almacenamiento GLACIER (archivo de objetos) y Buckets de pago por solicitante en la Guía del usuario de Amazon Simple Storage Service.

  • Si efectúa consultas de los buckets de S3 con un gran número de objetos y los datos no están divididos en particiones, dichas consultas pueden afectar a los límites de tasa de solicitudes Get en Amazon S3 y dar lugar a excepciones de Amazon S3. Para evitar errores, divida los datos. Plantéese también ajustar las tasas de solicitud de Amazon S3. Para obtener más información, consulte Velocidad de solicitudes y consideraciones sobre el rendimiento.

Para más información sobre cómo especificar una ubicación para sus datos en Amazon S3, consulte Especificación de la ubicación de una tabla en Amazon S3.

Otras consideraciones

  • Transformaciones de datos transaccionales no admitidas: Athena no admite operaciones basadas en transacciones (como las de Hive o Presto) para los datos de una tabla. Encontrará una lista completa de palabras clave no admitidas en Unsupported DDL.

  • Las operaciones en las tablas cumplen con las propiedades ACID: al crear, actualizar o eliminar tablas, se garantiza que tales operaciones cumplen con las propiedades ACID. Por ejemplo, si varios usuarios o clientes intentan crear una tabla o modificar una existente al mismo tiempo, solo uno lo conseguirá.

  • Las tablas son EXTERNAS: utilice siempre la palabra clave EXTERNAL, excepto al crear tablas de Iceberg. Si utiliza CREATE TABLE sin la palabra clave EXTERNAL para tablas que no son Iceberg, Athena emite un error. Al eliminar una tabla en Athena, solo desaparecen los metadatos de la tabla. Los datos permanecen en Amazon S3.

  • Longitud máxima de la cadena de consulta: la longitud máxima de la cadena de consulta es de 256 KB.

  • Si utiliza la operación de la API CreateTable de AWS Glue o la plantilla AWS::Glue::Table de AWS CloudFormation para crear una tabla para su uso en Athena sin especificar la propiedad TableType, y luego ejecuta una consulta DDL como SHOW CREATE TABLE o MSCK REPAIR TABLE, puede recibir el mensaje de error FAILED: NullPointerException Name is null (ERROR: el nombre NullPointerException es nulo).

    Para resolver el error, especifique un valor para el atributo TableType TableInput como parte de la llamada a la API CreateTable de AWS Glue o la plantilla AWS CloudFormation. Entre los valores posibles para TableType, se incluyen EXTERNAL_TABLE o VIRTUAL_VIEW.

    Este requisito se aplica únicamente cuando se crea una tabla mediante la operación de la API CreateTable de AWS Glue o la plantilla AWS::Glue::Table. Si crea una tabla para Athena mediante una instrucción DDL o un rastreador de AWS Glue, la propiedad TableType se define automáticamente.