Dados agregados no Amazon DynamoDB para previsão de ML no Athena - Recomendações da AWS

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Dados agregados no Amazon DynamoDB para previsão de ML no Athena

Criado por Sachin Doshi (AWS) e Peter Molnar (AWS)

Repositório de código: use previsões de ML sobre dados do Amazon DynamoDB com o Amazon Athena ML

Ambiente: produção

Tecnologias: machine learning e IA; bancos de dados; tecnologia sem servidor

Workload: código aberto

Serviços da AWS: Amazon Athena; Amazon DynamoDB; AWS Lambda; Amazon; Amazon SageMaker QuickSight

Resumo

Esse padrão mostra como criar agregações complexas de dados da Internet das Coisas (IoT) em uma tabela do Amazon DynamoDB usando o Amazon Athena. Você também aprende como enriquecer os dados com inferência de aprendizado de máquina (ML) usando a Amazon SageMaker e como consultar dados geoespaciais usando o Athena. Você poderá usar esse padrão como base para criar uma solução de previsão de ML que atenda aos requisitos da sua organização.

Para fins de demonstração, esse padrão usa um cenário de exemplo de uma empresa que opera um compartilhamento de scooters e deseja prever o número ideal de scooters que deverão ser implantados para clientes em diferentes bairros urbanos. A empresa usa um modelo de ML pré-treinado que prevê a demanda do cliente na próxima hora com base nas últimas quatro horas. O cenário usa um conjunto de dados público do Departamento de Inovação e Tecnologia Cívica da Prefeitura da região metropolitana de Louisville. Os recursos para esse cenário estão disponíveis em um GitHub repositório.

Pré-requisitos e limitações

  • Uma conta AWS ativa

  • Permissões para criar uma CloudFormation pilha da AWS com funções do AWS Identity and Access Management (IAM) para o seguinte:

    • Bucket do Amazon Simple Storage Service (Amazon S3)

    • Athena

    • DynamoDB

    • SageMaker

    • AWS Lambda

Arquitetura

Pilha de tecnologia

  • Amazon QuickSight

  • Amazon S3

  • Athena

  • DynamoDB

  • Lambda

  • SageMaker

Arquitetura de destino

O diagrama a seguir mostra uma arquitetura para criar agregações complexas de dados no DynamoDB usando os recursos de consulta do Athena, uma função Lambda, armazenamento Amazon S3, um endpoint e um painel. SageMaker QuickSight

O diagrama mostra o seguinte fluxo de trabalho:

  1. Uma tabela do DynamoDB ingere dados de IoT transmitidos de uma frota de patinetes.

  2. Uma função do Lambda carrega a tabela do DynamoDB com os dados ingeridos.

  3. Uma consulta do Athena cria uma nova tabela do DynamoDB para os dados geoespaciais que representam os bairros urbanos.

  4. O local da consulta é salvo em um bucket do S3.

  5. Uma função Athena consulta a inferência de ML do SageMaker endpoint que hospeda o modelo de ML pré-treinado.

  6. O Athena consulta dados diretamente das tabelas do DynamoDB e agrega os dados para análise.

  7. Um usuário visualiza a saída dos dados analisados em um QuickSight painel.

Ferramentas

Ferramentas da AWS

  • O Amazon Athena é um serviço de consultas interativas que facilita a análise de dados diretamente no Amazon S3 usando SQL padrão.

  • O Amazon DynamoDB é um serviço de banco de dados NoSQL totalmente gerenciado que fornece performance rápida, previsível e escalável.

  • SageMakerA Amazon é um serviço gerenciado de ML que ajuda você a criar e treinar modelos de ML e depois implantá-los em um ambiente hospedado pronto para produção.

  • O Amazon Simple Storage Service (Amazon S3) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.

  • QuickSightA Amazon é um serviço de inteligência de negócios (BI) em escala de nuvem que ajuda você a visualizar, analisar e relatar seus dados em um único painel.

  • O AWS Lambda é um serviço de computação que ajuda você a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.

Código

O código desse padrão está disponível no repositório GitHub Use ML predictions over Amazon DynamoDB with Amazon Athena ML. Você pode usar o CloudFormation modelo do repositório para criar os seguintes recursos usados no cenário de exemplo:

  • Uma tabela do DynamoDB

  • Uma função do Lambda para carregar a tabela com dados pertinentes

  • Um SageMaker endpoint para solicitações de inferência, com o modelo XGBoost pré-treinado que é armazenado no Amazon S3

  • Um grupo de trabalho do Athena chamado V2EngineWorkGroup

  • Consultas Athena nomeadas para pesquisar os shapefiles geoespaciais e prever a demanda de scooters

  • Um conector pré-construído do Amazon Athena DynamoDB que permite que o Athena se comunique com o DynamoDB e use o AWS Serverless Application Model (AWS SAM) para criar o aplicativo em referência ao conector do DynamoDB

Épicos

TarefaDescriçãoHabilidades necessárias

Baixe o conjunto de dados e os recursos.

  1. Baixe um conjunto de dados públicos de aluguéis de veículos sem doca. Para fins de demonstração, esses dados são pré-preenchidos no DynamoDB como parte do caso de uso, mas em um ambiente de produção você envia esses dados para o DynamoDB por meio de vários mecanismos, como dispositivos IoT ou consumidores do Amazon Kinesis. Esses mecanismos usam o Lambda para inserir dados no DynamoDB.

  2. Baixe os shapefiles GIS que representam os limites dos bairros históricos e culturais da cidade de Louisville, Kentucky (KY), EUA. O conjunto de dados público é fornecido pelo Consórcio de Informações de Louisville e Jefferson County, KY. Os shapefiles originais já foram convertidos em um arquivo de texto que você pode consultar com o Athena, mas você pode encontrar o código Python para transformar os shapefiles no notebook Jupyter em Geo-Spatial processing of GIS shapefiles with Amazon Athena in. GitHub

  3. Baixe o código Python pré-treinado que treina o modelo de ML para previsões de hora em hora usando SageMaker o Athena.

  4. Obtenha a consulta SQL no Athena que reúne tudo para previsões em tempo real a partir dos dados armazenados no DynamoDB.

  5. (Opcionalmente) Use QuickSight para visualizar dados geoespaciais em um mapa de Louisville, Kentucky.

Desenvolvedor de aplicativos, cientista de dados
TarefaDescriçãoHabilidades necessárias

Crie uma CloudFormation pilha.

  1. Baixe o CloudFormation modelo do GitHub repositório.

  2. Faça login no Console de Gerenciamento da AWS e em seguida selecione us-east-1. Observação: o modelo de ML é armazenado no Amazon Elastic Container Registry (Amazon ECR) para a região us-east-1 da AWS, mas o padrão é independente da região. Você poderá replicar o padrão em qualquer região em que os serviços da AWS usados nesse padrão sejam compatíveis.

  3. Abra o CloudFormation console e escolha Pilhas no painel de navegação.

  4. escolha Criar pilha e, em seguida, escolha Com recursos existentes (importar recursos).

  5. Na página Identificar recursos, escolha Próximo.

  6. Na seção Especificar modelo, em Origem do modelo, selecione Carregar um arquivo de modelo.

  7. Escolha Arquivo e, em seguida, escolha o CloudFormation modelo que você baixou anteriormente.

  8. Escolha Avançar, aceite os valores padrão dos parâmetros e escolha Avançar para percorrer o restante do assistente de configuração.

  9. Marque a caixa de seleção Eu reconheço que a AWS CloudFormation pode criar recursos do IAM com nomes personalizados.

  10. Selecione Criar pilha.

Observação: a CloudFormation pilha pode levar de 15 a 20 minutos para criar esses recursos.

AWS DevOps

Verifique a CloudFormation implantação.

Para verificar se os dados de amostra do CloudFormation modelo estão carregados no DynamoDB, faça o seguinte:

  1. Abra o Console do DynamoDB e depois escolha Tabelas no painel de navegação.

  2. Na seção Tabelas, verifique a tabela DynamoDBTableDocklessVehicles.

  3. Depois que a criação do recurso for concluída, abra o console do Athena e escolha Grupos de trabalho no painel de navegação.

  4. Escolha o grupo V2EngineWorkGroup de trabalho e, em seguida, escolha Trocar grupo de trabalho.

  5. Se você receber uma solicitação para salvar o local do resultado da consulta, escolha um local do Amazon S3 onde você tenha permissões de gravação.

  6. Escolha Salvar.

  7. No painel de navegação, escolha Editor de consultas e, depois, o banco de dados athena-ml-db-<your-AWS-account-number>.

Desenvolvedor de aplicativos
TarefaDescriçãoHabilidades necessárias

Crie uma tabela do Athena com dados geoespaciais.

Para carregar os arquivos de geolocalização no Athena, faça o seguinte:

  1. Abra o console do Athena e escolha o editor de consultas no painel de navegação.

  2. Escolha a guia Consultas de exemplo.

  3. Pesquise e selecione Q1: Bairros.

  4. Para retornar ao editor de consultas, escolha a guia Editor.

  5. Escolha Executar. Isso cria uma tabela nomeada louisville_ky_neighborhoods em seu banco de dados. Lembre-se de que a tabela é criada no banco de dados athena-ml-db-<your-AWS-account-number>.

A consulta cria uma nova tabela para os dados geoespaciais que representam os bairros urbanos. A tabela de dados é criada a partir de shapefiles GIS. A instrução CREATE EXTERNAL TABLE define o esquema da tabela e a localização e o formato do arquivo de dados subjacente.

Para que o código Python processe arquivos de formato e produza essa tabela, consulte Processamento geoespacial de arquivos de formato GIS com o Amazon Athena. em AWS Samples Para obter um código SQL detalhado, consulte create_neighborhood_table.sql em GitHub.

Engenheiro de dados
TarefaDescriçãoHabilidades necessárias

Declare uma função no Athena para consulta. SageMaker

  1. Abra o console do Athena, escolha Editor de consultas no painel de navegação e, em seguida, escolha a guia Editor.

  2. Copie e cole a instrução SQL a seguir no 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>'

A primeira parte da instrução SQL declara a função externa para consultar inferências de ML do SageMaker endpoint que hospeda o modelo pré-treinado.

Então, faça o seguinte:

  1. Defina a ordem e o tipo dos parâmetros de entrada e o dos valores retornados.

  2. Escolha Executar.

Cientista de dados, engenheiro de dados

Prever a demanda por patinetes por bairro a partir dos dados agregados do DynamoDB.

Agora você poderá usar o Athena para consultar dados transacionais diretamente do DynamoDB e, em seguida, agregar os dados para análise e previsão. Isso não é facilmente alcançado consultando diretamente um banco de dados NoSQL do DynamoDB.

  1. Abra o console do Athena e escolha o Editor de consultas no painel de navegação.

  2. Escolha a guia Consultas salvas.

  3. Pesquise e selecione Q2: ScooterPredict DynamoDbathenAML.

  4. Para retornar ao editor de consultas, escolha a guia Editor.

  5. Escolha Executar.

A instrução SQL faz o seguinte:

  • Usa uma Consulta federada do Athena para consultar a tabela do DynamoDB com os dados brutos da viagem

  • Coloca coordenadas geográficas em bairros usando as funções geoespaciais de Athena

  • Enriquece os dados com inferência de ML usando SageMaker

Para obter informações sobre como usar o SQL para agregar dados do DynamoDB e dados de SageMaker inferência no Athena, consulte athena_long.sql em. GitHub

Desenvolvedor de aplicativos, cientista de dados

Verifique a saída.

A tabela de saída inclui o bairro, longitude e latitude do centróide do bairro. Também inclui o número de veículos previstos para a próxima hora.

A consulta produz as previsões para um momento selecionado. Você poderá fazer previsões para qualquer outro momento alterando a expressão TIMESTAMP '2019-09-07 15:00' em todos os lugares da declaração.

Se você tiver um feed de dados em tempo real na tabela do DynamoDB, altere o timestamp para NOW().

Desenvolvedor de aplicativos, cientista de dados
TarefaDescriçãoHabilidades necessárias

Excluir recursos.

  1. Abra o console do Athena e esvazie o bucket que você criou como parte da CloudFormation pilha.

  2. Abra o CloudFormation console e, em seguida, exclua a pilha chamadabdb-1462-athena-dynamodb-ml-stack.

  3. Abra o CloudWatch console da Amazon e, em seguida, exclua o grupo de registros chamado/aws/sagemaker/Endpoints/Sg-athena-ml-dynamodb-model-endpoint.

Desenvolvedor de aplicativos, AWS DevOps

Recursos relacionados