Agregue datos en Amazon DynamoDB para pronósticos de ML en Athena - Recomendaciones de AWS

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.

Agregue datos en Amazon DynamoDB para pronósticos de ML en Athena

Creada por Sachin Doshi (AWS) y Peter Molnar () AWS

Repositorio de código: utilice predicciones de aprendizaje automático sobre datos de Amazon DynamoDB con Amazon Athena ML

Entorno: producción

Tecnologías: Machine learning e IA; Bases de datos; Sin servidor

Carga de trabajo: código abierto

AWSservicios: Amazon Athena; Amazon DynamoDB; AWS Lambda; Amazon; Amazon SageMaker QuickSight

Resumen

Este patrón muestra cómo compilar agregaciones complejas de datos de Internet de las cosas (IoT) en una tabla de Amazon DynamoDB mediante Amazon Athena. También aprenderá a enriquecer los datos con inferencias de aprendizaje automático (ML) mediante Amazon SageMaker y a consultar datos geoespaciales mediante Athena. Puede usar este patrón como base para crear una solución de pronóstico de ML que satisfaga las necesidades de su organización.

Con fines de demostración, este patrón emplea como ejemplo una empresa que opera un servicio de transporte compartido de patinetes, y quiere predecir la cantidad óptima de patinetes a instalar para los clientes de diferentes barrios urbanos. La empresa usa un modelo de ML previamente entrenado que predice la demanda de los clientes para la próxima hora en función de las últimas cuatro horas. Este escenario emplea un conjunto de datos públicos de la Oficina de Innovación y Tecnología Cívicas del gobierno metropolitano de Louisville. Los recursos para este escenario están disponibles en un repositorio. GitHub

Requisitos previos y limitaciones

  • Un activo Cuenta de AWS

  • Permisos para crear una AWS CloudFormation pila con funciones AWS Identity and Access Management (IAM) para lo siguiente:

    • Bucket de Amazon Simple Storage Service (Amazon S3)

    • Athena

    • DynamoDB

    • SageMaker

    • AWS Lambda

Arquitectura

Pila de tecnología

  • Amazon QuickSight

  • Amazon S3

  • Athena

  • DynamoDB

  • Lambda

  • SageMaker

Arquitectura de destino

En el siguiente diagrama, se muestra una arquitectura para crear agregaciones de datos complejas en DynamoDB mediante las capacidades de consulta de Athena, una función de Lambda, el almacenamiento de Amazon S3, un punto final y un panel de control. SageMaker QuickSight

Arquitectura para crear agregaciones de datos complejas en DynamoDB.

En el diagrama, se muestra el siguiente flujo de trabajo:

  1. Una tabla de DynamoDB incorpora los datos de IoT que se transmiten desde una flota de patinetes.

  2. Una función de Lambda carga la tabla de DynamoDB con los datos incorporados.

  3. Una consulta de Athena crea una nueva tabla de DynamoDB para datos geoespaciales que representan los barrios urbanos.

  4. La ubicación de la consulta se guarda en un bucket de S3.

  5. Una función Athena consulta la inferencia de ML desde el SageMaker punto final que aloja el modelo de ML previamente entrenado.

  6. Athena consulta los datos directamente de las tablas de DynamoDB y los agrega para su análisis.

  7. Un usuario ve el resultado de los datos analizados en un panel de control. QuickSight

Herramientas

Servicios de AWS

  • Amazon Athena es un servicio de consultas interactivo que le ayuda a analizar los datos directamente en Amazon S3 mediante el uso estándar. SQL

  • Amazon DynamoDB es un servicio SQL sin base de datos totalmente administrado que proporciona un rendimiento rápido, predecible y escalable.

  • Amazon SageMaker es un servicio de aprendizaje automático gestionado que le ayuda a crear y entrenar modelos de aprendizaje automático y, a continuación, a implementarlos en un entorno hospedado listo para la producción.

  • Amazon Simple Storage Service (Amazon S3) es un servicio de almacenamiento de objetos basado en la nube que le ayuda a almacenar, proteger y recuperar cualquier cantidad de datos.

  • Amazon QuickSight es un servicio de inteligencia empresarial (BI) a escala de nube que le ayuda a visualizar, analizar y elaborar informes sobre sus datos en un único panel de control.

  • AWS Lambda es un servicio de computación que ayuda a ejecutar código sin necesidad de aprovisionar ni administrar servidores. Ejecuta el código solo cuando es necesario y amplía la capacidad de manera automática, por lo que solo pagará por el tiempo de procesamiento que utilice.

Repositorio de código

El código de este patrón está disponible en el repositorio GitHub Use ML predictions over Amazon DynamoDB data with Amazon Athena ML. Puede utilizar la CloudFormation plantilla del repositorio para crear los siguientes recursos que se utilizan en el escenario de ejemplo:

Epics

TareaDescripciónHabilidades requeridas

Descargue el conjunto de datos y los recursos.

  1. Descargue un conjunto de datos públicos sobre el alquiler de vehículos en vía pública. Con fines de demostración, estos datos se rellenan previamente en DynamoDB como parte del caso de uso, pero en un entorno de producción, los datos se envían a DynamoDB a través de varios mecanismos, como dispositivos de IoT o consumidores de Amazon Kinesis. Estos mecanismos emplean Lambda para insertar datos en DynamoDB.

  2. Descargue los GISshapefiles que representan los límites de los barrios históricos y culturales de la ciudad de Louisville, Kentucky. El conjunto de datos público lo proporciona el Consorcio de Información del condado de Jefferson y Louisville, Kentucky. Los shapefiles originales ya están convertidos en un archivo de texto que puede consultar con Athena, pero puede encontrar el código Python para transformar los shapefiles en el cuaderno de Jupyter en Geo-Spatial Processing of shapefiles con Amazon Athena en. GIS GitHub

  3. Descargue el código Python previamente entrenado que entrena el modelo de aprendizaje automático para las previsiones SageMaker horarias mediante Athena.

  4. Obtenga la SQL consulta en Athena que reúne todo para realizar predicciones en tiempo real a partir de los datos almacenados en DynamoDB.

  5. (Opcional) Úselo QuickSight para visualizar datos geoespaciales en un mapa de Louisville, Kentucky.

Desarrollador de aplicaciones, científico de datos
TareaDescripciónHabilidades requeridas

Crea una CloudFormation pila.

  1. Descarga la CloudFormation plantilla del GitHub repositorio.

  2. Inicie sesión en y AWS Management Console, a continuación, elijaus-east-1. Nota: El modelo ML se almacena en Amazon Elastic Container Registry (AmazonECR) para el us-east-1 Región de AWS, pero el patrón es independiente de la región. Puede replicar el patrón en cualquier región en la que se admitan los Servicios de AWS utilizados en este patrón.

  3. Abre la CloudFormation consola y, a continuación, selecciona Stacks en el panel de navegación.

  4. Elija Create stack (Crear pila) y, a continuación, seleccione With existing resources (import resources) (Con recursos existentes (importar recursos)).

  5. En la página Identificar recursos, seleccione Siguiente.

  6. En la sección Especificar plantilla, en Origen de la plantilla, seleccione Cargar un archivo de plantilla.

  7. Selecciona Archivo y, a continuación, elige la CloudFormation plantilla que descargaste anteriormente.

  8. Seleccione Siguiente, acepte los valores de los parámetros predeterminados y seleccione Siguiente para continuar con el asistente de configuración.

  9. Active la casilla de verificación Acepto que AWS CloudFormation podría crear IAM recursos con nombres personalizados.

  10. Seleccione Crear pila.

Nota: La CloudFormation pila puede tardar entre 15 y 20 minutos en crear estos recursos.

AWS DevOps

Verifique la implementación. CloudFormation

Para comprobar que los datos de ejemplo de la CloudFormation plantilla se cargan en DynamoDB, haga lo siguiente:

  1. Abra la consola de DynamoDB y, a continuación, seleccione Tablas en el panel de navegación.

  2. En la sección Tablas, busque la tabla DynamoDBTableDocklessVehicles.

  3. Una vez finalizada la creación del recurso, abra la consola de Athena y, a continuación, seleccione Grupos de trabajo en el panel de navegación.

  4. Seleccione el grupo de trabajo V2EngineWorkGroup que quiere utilizar y seleccione Cambiar grupo de trabajo.

  5. Si el sistema le solicita que guarde la ubicación de los resultados de la consulta, seleccione una ubicación de Amazon S3 en la que tenga permisos de escritura.

  6. Seleccione Guardar.

  7. En el panel de navegación, seleccione Query editor (Editor de consultas) y, a continuación, la base de datos athena-ml-db-<your-AWS-account-number>.

Desarrollador de aplicaciones
TareaDescripciónHabilidades requeridas

Cree una tabla de Athena con datos geoespaciales.

Para cargar los archivos de geolocalización en Athena, haga lo siguiente:

  1. Abra la consola de Athena y seleccione Editor de consultas en el panel de navegación.

  2. Seleccione la pestaña Sample queries (Consultas de muestra).

  3. Busque y seleccione Q1: Neighborhoods.

  4. Para volver al editor de consultas, seleccione la pestaña Editor.

  5. Elija Ejecutar. Se creará una tabla con el nombre louisville_ky_neighborhoods en su base de datos. La tabla se crea en la base de datos athena-ml-db-<your-AWS-account-number>.

La consulta crea una nueva tabla para datos geoespaciales que representan los barrios urbanos. La tabla de datos se crea a partir GIS de shapefiles. La instrucción CREATE EXTERNAL TABLE define el esquema de la tabla y la ubicación y el formato del archivo de datos subyacente.

Para ver el código de Python para procesar los shapefiles y producir esta tabla, consulte Procesamiento geoespacial de GIS shapefiles con Amazon Athena en Samples. AWS Para obtener información detallada sobre el código, consulte create_neighborhood_table.sql en. SQL GitHub

Ingeniero de datos
TareaDescripciónHabilidades requeridas

Declare una función en Athena para consultarla. SageMaker

  1. Abra la consola de Athena y seleccione Editor de consultas en el panel de navegación, y posteriormente seleccione la pestaña Editor.

  2. Copia y pega la siguiente SQL declaración en el editor de consultas.

    USING EXTERNAL FUNCTION predict_demand ( location_id BIGINT, hr BIGINT , dow BIGINT, n_pickup_1 BIGINT, n_pickup_2 BIGINT, n_pickup_3 BIGINT, n_pickup_4 BIGINT, n_dropoff_1 BIGINT, n_dropoff_2 BIGINT, n_dropoff_3 BIGINT, n_dropoff_4 BIGINT ) RETURNS DOUBLE SAGEMAKER '<Your SageMaker endpoint>'

    La primera parte de la SQL declaración declara que la función externa consultará las inferencias de aprendizaje automático desde el SageMaker punto final que aloja el modelo previamente entrenado.

  3. Defina el orden y tipo de los parámetros de entrada y el tipo de valores devueltos.

  4. Elija Ejecutar.

Científico de datos, ingeniero de datos

Pronostique la demanda de patinetes en función del barrio a partir de los datos agregados de DynamoDB.

Ahora puede usar Athena para consultar datos transaccionales directamente desde DynamoDB y, a continuación, agregar los datos para su análisis y previsión. Esto no se consigue fácilmente consultando directamente una base de datos de SQL DynamoDB No.

  1. Abra la consola de Athena y seleccione Editor de consultas en el panel de navegación.

  2. Seleccione la pestaña Saved queries (Consultas guardadas).

  3. Busque y seleccione Q2: D. ynamoDBAthena MLScooterPredict

  4. Para volver al editor de consultas, seleccione la pestaña Editor.

  5. Elija Ejecutar.

La SQL declaración hace lo siguiente:

  • Usa una consulta federada de Athena para consultar la tabla de DynamoDB con los datos de viaje sin procesar

  • Coloca las coordenadas geográficas en los barrios mediante las funciones geoespaciales de Athena

  • Enriquece los datos con la inferencia de aprendizaje automático mediante el uso de SageMaker

Para obtener información sobre cómo SQL agregar datos de DynamoDB SageMaker y datos de inferencia en Athena, consulte el archivo athena_long.sql en. GitHub

Desarrollador de aplicaciones, científico de datos

Verifique el resultado.

La tabla de resultados incluye el barrio, la longitud y la latitud de su centroide. También incluye la cantidad de vehículos que se prevé para la próxima hora.

La consulta produce las predicciones para un momento determinado. Puede realizar predicciones para cualquier otro momento cambiando la expresión TIMESTAMP '2019-09-07 15:00' en todas las partes de la instrucción.

Si tiene un origen de datos en tiempo real en la tabla de DynamoDB, cambie la marca temporal a NOW().

Desarrollador de aplicaciones, científico de datos
TareaDescripciónHabilidades requeridas

Delete resources (Eliminar recursos).

  1. Abre la consola de Athena y vacía el cubo que has creado como parte de la CloudFormation pila.

  2. Abre la CloudFormation consola y, a continuación, elimina la pila nombradabdb-1462-athena-dynamodb-ml-stack.

  3. Abre la CloudWatch consola de Amazon y, a continuación, elimina el grupo de registros denominado/aws/sagemaker/Endpoints/Sg-athena-ml-dynamodb-model-endpoint.

Desarrollador de aplicaciones, AWS DevOps

Recursos relacionados