Conector para Timestream de Amazon Athena - Amazon Athena

Conector para Timestream de Amazon Athena

El conector de Timestream de Amazon Athena permite que este servicio se comunique con Amazon Timestream, lo que permite el acceso a los datos de serie temporal a través de Amazon Athena. De manera opcional, puede utilizar AWS Glue Data Catalog como fuente de metadatos complementarios.

Amazon Timestream es una base de datos de serie temporal rápida, escalable, completamente administrada y diseñada específicamente que facilita el almacenamiento y el análisis de billones de puntos de datos de serie temporal por día. Timestream le ahorra tiempo y costo en la administración del ciclo de vida de los datos de serie temporal al mantener los datos recientes en la memoria y mover los datos históricos a un nivel de almacenamiento de información de costo optimizado en función de las políticas definidas por el usuario.

Si Lake Formation está habilitado en la cuenta, el rol de IAM del conector de Lambda federado de Athena que haya implementado en AWS Serverless Application Repository debe tener acceso de lectura en Lake Formation para AWS Glue Data Catalog.

Requisitos previos

Parámetros

Use las variables de entorno de Lambda de esta sección para configurar el conector de Timestream.

  • spill_bucket: especifica el bucket de Amazon S3 para los datos que superen los límites de la función de Lambda.

  • spill_prefix: (opcional) de forma predeterminada, se establece una subcarpeta en la carpeta especificada spill_bucket llamada athena-federation-spill. Le recomendamos configurar un ciclo de vida de almacenamiento de Amazon S3 en esta ubicación para eliminar vertidos de más de un número predeterminado de días u horas.

  • spill_put_request_headers: (opcional) un mapa codificado en JSON de encabezados y valores de solicitudes para la solicitud putObject de Amazon S3 que se usa para el vertidos (por ejemplo, {"x-amz-server-side-encryption" : "AES256"}). Para ver otros encabezados posibles, consulte PutObject en la referencia de la API de Amazon Simple Storage Service.

  • kms_key_id: (opcional) de forma predeterminada, los datos que se vierten a Amazon S3 se cifran mediante el modo de cifrado autenticado AES-GCM y una clave generada aleatoriamente. Para que la función de Lambda use claves de cifrado más seguras generadas por KMS, como a7e63k4b-8loc-40db-a2a1-4d0en2cd8331, puede especificar un ID de clave de KMS.

  • disable_spill_encryption: (opcional) cuando se establece en True, desactiva el cifrado del vertido. El valor predeterminado es False, de modo que los datos que se vierten a S3 se cifran mediante AES-GCM, ya sea mediante una clave generada aleatoriamente o KMS para generar claves. La desactivación del cifrado de vertido puede mejorar el rendimiento, especialmente si su ubicación de vertido usa cifrado del servidor.

  • glue_catalog: (opcional) use esta opción para especificar un catálogo de AWS Glue entre cuentas. De forma predeterminada, el conector intenta obtener los metadatos de su propia cuenta de AWS Glue.

Configuración de bases de datos y tablas en AWS Glue

De manera opcional, puede usar AWS Glue Data Catalog como fuente de metadatos complementarios. Para habilitar una tabla de AWS Glue con la intención de usarla con Timestream, debe disponer de una tabla y una base de datos de AWS Glue con nombres que coincidan con la base de datos y la tabla de Timestream a los que quiere proporcionar metadatos complementarios.

nota

Para obtener el mejor rendimiento, use solo minúsculas en los nombres de las bases de datos y tablas. El uso combinado de mayúsculas y minúsculas hace que el conector realice una búsqueda que no distinga mayúsculas de minúsculas, lo que requiere un mayor esfuerzo computacional.

Para configurar una tabla de AWS Glue con la intención de usarla con Timestream, debe establecer las propiedades de la tabla en AWS Glue.

Para usar una tabla de AWS Glue para metadatos complementarios
  1. Edite la tabla en la consola de AWS Glue para agregar las siguientes propiedades de tabla:

    • timestream-metadata-flag: esta propiedad indica al conector de Timestream que este puede usar la tabla para obtener metadatos complementarios. Puede proporcionar cualquier valor para timestream-metadata-flag siempre y cuando la timestream-metadata-flag esté presente en la lista de propiedades de la tabla.

    • _view_template: cuando use AWS Glue para obtener metadatos complementarios, puede usar esta propiedad de tabla y especificar cualquier SQL de Timestream como vista. El conector de Timestream de Athena usa el SQL de la vista junto con el SQL de Athena para ejecutar la consulta. Esta opción es útil si quiere usar una característica de SQL de Timestream que no está disponible en Athena de otro modo.

  2. Asegúrese de usar los tipos de datos adecuados para AWS Glue, como se indica en este documento.

Tipos de datos

Actualmente, el conector de Timestream solo admite un subconjunto de los tipos de datos disponibles en Timestream, específicamente: los valores escalares varchar, double y timestamp.

Para consultar el tipo de datos timeseries, debe configurar una vista en las propiedades de la tabla de AWS Glue que use la función CREATE_TIME_SERIES de Timestream. También debe proporcionar un esquema para la vista que use la sintaxis ARRAY<STRUCT<time:timestamp,measure_value::double:double>> como el tipo de cualquiera de las columnas de la serie temporal. Asegúrese de reemplazar double por el tipo escalar adecuado para la tabla.

En la siguiente imagen, se muestra un ejemplo de propiedades de tabla de AWS Glue configuradas para crear una vista en una serie temporal.

Configuración de propiedades de tabla en AWS Glue para crear una vista de una serie temporal.

Permisos necesarios

Para obtener información completa sobre las políticas de IAM que requiere este conector, consulte la sección Policies del archivo athena-timestream.yaml. En la siguiente lista se resumen los permisos requeridos.

  • Acceso de escritura a Amazon S3: el conector requiere acceso de escritura a una ubicación de Amazon S3 para volcar los resultados de consultas de gran tamaño.

  • Athena GetQueryExecution: el conector usa este permiso para fallar rápidamente cuando finaliza la consulta ascendente de Athena.

  • AWS Glue Data Catalog: el conector de Timestream requiere acceso de solo lectura a AWS Glue Data Catalog para obtener información sobre el esquema.

  • Registros de CloudWatch: el conector requiere acceso a Registros de CloudWatch para almacenar registros.

  • Acceso a Timestream: para ejecutar consultas de Timestream.

Rendimiento

Le recomendamos usar la cláusula LIMIT para limitar los datos devueltos (no los datos analizados) a menos de 256 MB para garantizar que las consultas interactivas tengan un buen rendimiento.

El conector Timestream de Athena inserta predicados para reducir los datos analizados en la consulta. Las cláusulas LIMIT reducen la cantidad de datos analizados; sin embargo, si no proporciona un predicado, debe tener en cuenta que las consultas SELECT con una cláusula LIMIT analizan al menos 16 MB de datos. La selección de un subconjunto de columnas acelera significativamente el tiempo de ejecución de las consultas y reduce la cantidad de datos analizados. El conector para Timestream resiste las limitaciones debidas a la simultaneidad.

Consultas de acceso directo

El conector para Timestream admite consultas de acceso directo. Las consultas de acceso directo utilizan una función de tabla para enviar la consulta completa al origen de datos para su ejecución.

Para usar consultas de acceso directo con Timestream, puede utilizar la siguiente sintaxis:

SELECT * FROM TABLE( system.query( query => 'query string' ))

En el siguiente ejemplo de consulta, se envía una consulta a un origen de datos de Timestream. La consulta selecciona todas las columnas de la tabla customer y limita los resultados a 10.

SELECT * FROM TABLE( system.query( query => 'SELECT * FROM customer LIMIT 10' ))

Información sobre licencias

El proyecto de conector de Timestream de Amazon Athena está cubierto por la Licencia de Apache-2.0.

Recursos adicionales de

Para obtener más información acerca de este conector, consulte el sitio correspondiente en GitHub.com.