Neste módulo, você criará um aplicativo do Amazon Kinesis Data Analytics para agregar os dados do sensor da frota de unicórnios em tempo real. O aplicativo fará a leitura no stream do Amazon Kinesis, calculará a distância total percorrida e os pontos de saúde e de magia mínimos e máximos de cada unicórnio atualmente em uma Wild Ryde e enviar esses dados estatísticos agregados para um stream do Amazon Kinesis a cada minuto.

A arquitetura desse módulo envolve um aplicativo do Amazon Kinesis Data Analytics, streams do Amazon Kinesis de origem e destino e clientes da linha de comando de produtor e consumidor.

O aplicativo do Amazon Kinesis Data Analytics processa dados do stream de origem do Amazon Kinesis que criamos no módulo anterior e os agrega a cada minuto. A cada minuto, o aplicativo emitirá dados, incluindo a distância total percorrida no último minuto, além das leituras mínimas e máximas dos pontos de saúde e de magia de cada unicórnio da frota. Esses pontos de dados serão enviados a um stream de destino do Amazon Kinesis para serem processados por outros componentes do nosso sistema.

Tempo de conclusão do módulo: 20 minutos

Serviços usados:
• Streams de dados do Amazon Kinesis
• Amazon Kinesis Data Analytics


  • Etapa 1. Criar um stream do Amazon Kinesis

    Use o console do Amazon Kinesis Data Streams para criar um novo stream denominado wildrydes-summary com 1 estilhaço.


    a. Acesse o Console de gerenciamento da AWS, clique em Serviços e selecione Kinesis em Análise.

    b. Selecione Comece a usar quando solicitado por uma tela de introdução.

    c. Selecione Criar stream de dados.

    d. Digite wildrydes-summary em nome do stream do Kinesis e 1 em Número de estilhaços e, a seguir, selecione Criar stream do Kinesis.

    e. Em 60 segundos, o stream do Kinesis estará ATIVO e pronto para armazenar os dados de streaming em tempo real.

  • Etapa 2. Criar um aplicativo do Amazon Kinesis Data Analytics

    Crie um aplicativo do Amazon Kinesis Data Analytics que faça leituras no stream wildrydes criado no módulo anterior e emita um objeto JSON com os seguintes atributos a cada minuto:

    Nome Nome do unicórnio
    StatusTime ROWTIME fornecido pelo Amazon Kinesis Data Analytics
    Distância A soma das distâncias percorridas pelo unicórnio
    MinMagicPoints Os pontos de dados máximos do atributo MagicPoints
    MaxMagicPoints Os pontos de dados mínimos do atributo MagicPoints
    MinHealthPoints Os pontos de dados mínimos do atributo HealthPoints
    MaxHealthPoints Os pontos de dados máximos do atributo HealthPoints

    a. Mude para a guia em que você abriu o ambiente Cloud9.

    b. Execute o produtor para começar a emitir dados do sensor para o stream.

    ./producer

    Produzir ativamente os dados do sensor enquanto estamos criando o aplicativo permite que o Amazon Kinesis Data Analytics detecte automaticamente nosso esquema.

    c. Acesse o Console de gerenciamento da AWS, clique em Serviços e, a seguir, selecione Kinesis em Análise.

    d. Selecione Criar aplicativo de análise.

    e. Digite wildrydes no nome do aplicativo e, a seguir, selecione Criar aplicativo.

    f. Selecione Conectar dados de streaming.

    g. Selecione wildrydes em stream do Kinesis.

    h. Role para baixo e clique em Descobrir esquema, aguarde um momento e certifique-se de que o esquema tenha sido detectado automaticamente da maneira adequada.

    Certifique-se de que o esquema detectado automaticamente inclua:

     

    Coluna Tipo de dados
    Distância DOUBLE
    HealthPoints INTERGER
    Latitude DOUBLE
    Longitude DOUBLE
    MagicPoints INTEGER
    Nome VARCHAR(16)
    StatusTime TIMESTAMP

    i. Selecione Salvar e continuar.

    j. Selecione Ir para o editor SQL. Essa ação abrirá uma sessão interativa de consultas em que poderemos criar uma consulta em adição ao stream em tempo real do Amazon Kinesis.

    k. Selecione Sim, iniciar o aplicativo. Levará 30-90 segundos para seu aplicativo iniciar.

    l. Copie e cole a seguinte consulta SQL no editor SQL:

     

    CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" (
      "Name"                VARCHAR(16),
      "StatusTime"          TIMESTAMP,
      "Distance"            SMALLINT,
      "MinMagicPoints"      SMALLINT,
      "MaxMagicPoints"      SMALLINT,
      "MinHealthPoints"     SMALLINT,
      "MaxHealthPoints"     SMALLINT
    );
    
    CREATE OR REPLACE PUMP "STREAM_PUMP" AS
      INSERT INTO "DESTINATION_SQL_STREAM"
        SELECT STREAM "Name", "ROWTIME", SUM("Distance"), MIN("MagicPoints"),
                      MAX("MagicPoints"), MIN("HealthPoints"), MAX("HealthPoints")
        FROM "SOURCE_SQL_STREAM_001"
        GROUP BY FLOOR("SOURCE_SQL_STREAM_001"."ROWTIME" TO MINUTE), "Name";

    (clique para ampliar)

    m. Selecione Salvar e executar SQL. A cada minuto, você observará o surgimento de linhas contendo os dados agregados. Aguarde o surgimento das linhas.

    n. Clique no link Destino .

    o. Selecione Conectar a um destino.

    p. Selecione wildrydes-summary em stream do Kinesis.

    q. Selecione DESTINATION_SQL_STREAM em Nome do stream no aplicativo.

    r. Selecione Salvar e continuar.

    (clique para ampliar)

  • Etapa 3. Ler mensagens no stream

    Use o consumidor da linha de comando para visualizar mensagens no stream do Kinesis e ver os dados agregados sendo enviados a cada minuto.


    a. Mude para a guia em que o ambiente CLoud9 foi aberto.

    b. Execute o consumidor para começar a ler os dados do sensor no stream.

    ./consumer -stream wildrydes-summary

    O consumidor imprimirá as mensagens que estiverem sendo enviadas pelo aplicativo do Kinesis Data Analytics a cada minuto:

    {
      "Name": "Shadowfax",
      "StatusTime": "2018-03-18 03:20:00.000",
      "Distance": 362,
      "MinMagicPoints": 170,
      "MaxMagicPoints": 172,
      "MinHealthPoints": 146,
      "MaxHealthPoints": 149
    }
  • Etapa 4. Experimentar com o produtor

    Interrompa e inicie o produtor enquanto assiste ao painel e ao consumidor. Inicie múltiplos produtores com diferentes nomes de unicórnio.


    a. Mude para a guia em que o ambiente CLoud9 foi aberto.

    b. Interrompa o produtor pressionando Control + C e observe a interrupção das mensagens.

    c. Reinicie o produtor e observe a retomada das mensagens.

    d. Pressione o botão (+) e clique em Novo terminal para abrir uma nova guia de terminal.

    e. Inicie outra instância do produtor na nova guia. Forneça um nome de unicórnio específico e observe os pontos de dados para ambos os unicórnios na saída do consumidor:

    ./producer -name Bucephalus

    f. Certifique-se de observar múltiplos unicórnios na saída:

    {
        "Name": "Shadowfax",
        "StatusTime": "2018-03-18 03:20:00.000",
        "Distance": 362,
        "MinMagicPoints": 170,
        "MaxMagicPoints": 172,
        "MinHealthPoints": 146,
        "MaxHealthPoints": 149
    }
    {
        "Name": "Bucephalus",
        "StatusTime": "2018-03-18 03:20:00.000",
        "Distance": 1773,
        "MinMagicPoints": 140,
        "MaxMagicPoints": 148,
        "MinHealthPoints": 132,
        "MaxHealthPoints": 138
    }
  • Resumo e dicas


    🔑 O Amazon Kinesis Data Analytics permite consultar dados de streaming ou criar aplicativos completos de streaming usando SQL para obter insights práticos e atender rapidamente às necessidades empresariais e dos clientes.

    🔧 Neste módulo, você criou um aplicativo do Kinesis Data Analytics que lê no Kinesis streams de dados de unicórnios e emite uma linha de resumo a cada minuto.

No próximo módulo, você usará o AWS Lambda para processar dados no stream do wildrydes  do Amazon Kinesis criado anteriormente. Criaremos e configuraremos uma função Lambda para ler no stream e gravar registros em uma tabela do Amazon Dynamodb à medida que eles chegarem.