Creación de tablas en Athena - Amazon Athena

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.

Creación de tablas en Athena

Puede ejecutar instrucciones DDL en la consola de Athena mediante un controlador ODBC o JDBC, o mediante el formulario Add Table (Agregar tabla) de Athena.

Cuando se usa Athena para crear un nuevo esquema de tabla, Athena lo almacena un catálogo de datos y lo usa al ejecutar consultas.

Athena utiliza un método conocido como esquema en lectura, que implica la proyección de un esquema sobre los datos en el momento de ejecutar la consulta. Así no es necesaria la carga ni la transformación de los datos.

Athena no modifica los datos en Amazon S3.

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.

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. 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.

Cuando se realiza la consulta, se aplica SQL estándar a la tabla y los datos se leen en ese momento. En la documentación de Apache Hive, encontrará información para crear bases de datos y tablas, pero la información siguiente lo orientará específicamente para Athena.

La longitud máxima de la cadena de consulta es de 256 KB.

Hive admite diversos formatos de datos mediante el uso de bibliotecas serializadoras-deserializadoras (SerDe). También puede definir esquemas complejos con expresiones regulares. Para obtener una lista de las bibliotecas SerDe compatibles, consulte Formatos de datos y SerDes compatibles.

Condiciones y limitaciones

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

Requisitos para las tablas en Athena y los datos en 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 adecuados para trabajar con los datos de la ubicación de Amazon S3. Para obtener más información, consulte Acceso a Amazon S3.

  • 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.

  • Athena no es compatible con la consulta de los datos en las clases de almacenamiento S3 Glacier Flexible Retrieval ni S3 Glacier Deep Archive. Se ignoran los objetos de las clases de almacenamiento S3 Glacier Flexible Retrieval y S3 Glacier Deep Archive. Como alternativa, puede utilizar la clase de almacenamiento Amazon S3 Glacier Instant Retrieval, que Athena puede consultar. Para obtener más información, consulte Amazon S3 Glacier instant retrieval storage class (Clase de almacenamiento Amazon S3 Glacier Instant Retrieval).

    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.

  • 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.

Funciones compatibles

Las funciones admitidas en las consultas de Athena corresponden a las de Trino y Presto. Para obtener más información sobre funciones individuales, consulte la sección de funciones y operadores en la documentación de Trino o Presto.

No se admiten transformaciones de datos transaccionales

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 que cambian el estado de las tablas son ACID.

Al crear, actualizar o eliminar tablas, está garantizado que tales operaciones cumplen con 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 EXTERNAL

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.

Creación de tablas mediante AWS Glue o la consola de Athena

Puede crear tablas en Athena mediante AWS Glue, el formulario para agregar tablas, o ejecutando una instrucción DDL en el editor de consultas de Athena.

Para crear una tabla con el rastreador de AWS Glue

  1. Abra la consola de Athena en https://console.aws.amazon.com/athena/.

  2. En el editor de consultas, junto a Tablas y vistas, elija Crear y, a continuación, Rastreador de AWS Glue.

  3. Siga los pasos de la página Add crawler (Agregar rastreador) de la consola de AWS Glue para agregar un rastreador.

    Para obtener más información, consulte Uso de AWS Glue rastreadores.

Para crear una tabla mediante el formulario para crear tablas de Athena

  1. Abra la consola de Athena en https://console.aws.amazon.com/athena/.

  2. En el editor de consultas, junto a Tables and views (Tablas y vistas), elija Create (Crear) y, a continuación, S3 bucket data (Datos del bucket de S3).

  3. En el formulario Create Table From S3 bucket data (Crear tabla a partir de datos de buckets de S3), ingrese la información para crear la tabla y, a continuación, elija Create table (Crear tabla). Para obtener más información acerca de los campos del formulario, consulte Adición de una tabla mediante un formulario.

Para crear una tabla con DDL de Hive

  1. En el menú Database (Base de datos), elija la base de datos para la que desea crear una tabla. Si no especifica una base de datos en la instrucción CREATE TABLE, la tabla se crea en la base de datos seleccionada actualmente en el editor de consultas.

  2. Ingrese una instrucción como la siguiente en el editor de consultas y, a continuación, elija Run (Ejecutar) o pulse Ctrl+ENTER.

    CREATE EXTERNAL TABLE IF NOT EXISTS cloudfront_logs ( `Date` Date, Time STRING, Location STRING, Bytes INT, RequestIP STRING, Method STRING, Host STRING, Uri STRING, Status INT, Referrer STRING, OS String, Browser String, BrowserVersion String ) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe' WITH SERDEPROPERTIES ( "input.regex" = "^(?!#)([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+[^\(]+[\(]([^\;]+).*\%20([^\/]+)[\/](.*)$" ) LOCATION 's3://athena-examples-MyRegion/cloudfront/plaintext/';

Mostrar información de tablas

Después de crear una tabla en Athena, su nombre se muestra en la lista Tables (Tablas) de la izquierda. Para mostrar información acerca de la tabla y administrarla, haga clic en los tres puntos verticales junto al nombre de la tabla en la consola de Athena.

  • Preview table (Previsualizar la tabla): muestra las primeras 10 filas de todas las columnas mediante la ejecución de la instrucción SELECT * FROM "database_name"."table_name" LIMIT 10 en el editor de consultas de Athena.

  • Generate table DDL (Generar tabla DDL): genera una instrucción DDL que puede utilizar para volver a crear la tabla mediante la ejecución de la instrucción de SHOW CREATE TABLE table_name en el editor de consultas de Athena.

  • Load partitions (Cargar particiones): ejecuta la instrucción MSCK REPAIR TABLE table_name en el editor de consultas de Athena. Esta opción solo está disponible si la tabla tiene particiones.

  • Insert into editor (Insertar en el editor): inserta el nombre de la tabla en la ubicación de edición actual del editor de consultas.

  • Eliminar tabla: muestra un cuadro de diálogo de confirmación en el que se le pregunta si desea eliminar la tabla. Si acepta, ejecuta la instrucción DROP TABLE table_name en el editor de consultas de Athena.

  • Propiedades de tabla: muestra el nombre de la tabla, el nombre de la base de datos, la hora de creación y si la tabla tiene datos cifrados.