En este módulo, creará una aplicación de Amazon Kinesis Data Analytics para agregar datos del sensor de la flota de unicornios en tiempo real. La aplicación leerá de la secuencia de Amazon Kinesis, calculará la distancia total recorrida, y los puntos de magia y estado mínimos y máximos de cada unicornio que está actualmente en un Wild Ryde y generará estas estadísticas agregadas en una secuencia de datos de Amazon Kinesis cada minuto.

La arquitectura de este módulo implica una aplicación de Amazon Kinesis Data Analytics, secuencias de origen y de destino de Amazon Kinesis y los clientes de la línea de comandos de productor y consumidor.

La aplicación de Amazon Kinesis Data Analytics procesa los datos de la secuencia de origen de Amazon Kinesis que creamos en el módulo anterior y los agrega por minuto. Cada minuto, la aplicación emitirá datos, incluida la distancia total recorrida en el último minuto y las lecturas mínimas y máximas de los puntos de magia y de estado de cada unicornio en la flota. Estos puntos de datos se enviarán a una secuencia de destino de Amazon Kinesis para que otros componentes de nuestro sistema los procesen.

Tiempo para completar el módulo: 20 minutos

Servicios utilizados:
• Amazon Kinesis Data Streams
• Amazon Kinesis Data Analytics


  • Paso 1. Crear una secuencia de Amazon Kinesis

    Use la consola de Amazon Kinesis Data Streams para crear una nueva secuencia de datos llamada wildrydes-summary con partición.


    a. Vaya a la consola de administración de AWS, haga clic en Servicios y, luego, seleccione Kinesis en Análisis.

    b. Seleccione Comenzar si aparece una pantalla introductoria.

    c. Seleccione Crear secuencia de datos.

    d. Escriba wildrydes-summary en el nombre de la secuencia de Kinesis y 1 en la cantidad de particiones y, a continuación, seleccione Crear secuencia de Kinesis.

    e. En 60 segundos, su secuencia de Kinesis estará ACTIVA y lista para almacenar los datos de streaming en tiempo real.

  • Paso 2. Crear una aplicación de Amazon Kinesis Data Analytics

    Cree una aplicación de Amazon Kinesis Data Analytics que lea de la secuencia de datos de wildrydes que se creó en el módulo anterior y emita un objeto JSON con los siguientes atributos cada minuto:

    Name Nombre del unicornio
    StatusTime ROWTIME proporcionado por Amazon Kinesis Data Analytics
    Distance El total de la distancia recorrida por el unicornio
    MinMagicPoints El punto de datos máximo del atributo MagicPoints
    MaxMagicPoints El punto de datos máximo del atributo MagicPoints
    MinHealthPoints El punto de datos mínimo del atributo HealthPoints
    MaxHealthPoints El punto de datos máximo del atributo HealthPoints

    a. Cambie a la pestaña en la que tiene su entorno de Cloud9 abierto.

    b. Ejecute el productor para comenzar a emitir datos del sensor a la secuencia de datos.

    ./producer

    Producir de manera activa los datos del sensor mientras creamos la aplicación permite que Amazon Kinesis Data Analytics detecte automáticamente nuestro esquema.

    c. Vaya a la consola de administración de AWS, haga clic en Servicios y, a continuación, seleccione Kinesis en Análisis.

    d. Seleccione Crear una aplicación de análisis.

    e. Escriba wildrydes en el Nombre de la aplicación y, a continuación, seleccione Crear aplicación.

    f. Seleccione Conectar datos de streaming.

    g. Seleccione wildrydes en secuencia de Kinesis.

    h. Desplácese hacia abajo y haga clic en Detectar esquema, espere un momento y asegúrese de que el esquema haya sido detectado automáticamente de forma adecuada.

    Asegúrese de que el esquema detectado automáticamente incluya lo siguiente:

     

    Columna Tipo de datos
    Distance DOUBLE
    HealthPoints INTERGER
    Latitude DOUBLE
    Longitude DOUBLE
    MagicPoints INTEGER
    Name VARCHAR(16)
    StatusTime TIMESTAMP

    i. Seleccione Guardar y continuar.

    j. Seleccione Ir al editor de SQL. Esto abrirá una sesión de consulta interactiva en la que se puede crear una consulta sobre nuestra secuencia de Amazon Kinesis en tiempo real.

    k. Seleccione Sí, iniciar la aplicación. Tomará entre 30 y 90 segundos para que se inicie la aplicación.

    l. Copie y pegue la siguiente consulta de SQL en el editor de 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";

    (haga clic para acercar)

    m. Seleccione Guardar y ejecutar SQL. Cada minuto, verá aparecer las filas con los datos agregados. Espere a que aparezcan las filas.

    n. Haga clic en el enlace Destino.

    o. Seleccione Conectarse a un destino.

    p. Seleccione wildrydes-summary en Secuencia de Kinesis.

    q. Seleccione DESTINATION_SQL_STREAM en el Nombre de la secuencia de datos en la aplicación.

    r. Seleccione Guardar y continuar.

    (haga clic para acercar)

  • Paso 3. Leer mensajes de la secuencia

    Use el consumidor de línea de comandos para ver los mensajes de la secuencia de Kinesis a fin de ver cómo se envían los datos agregados cada minuto.


    a. Cambie a la pestaña en la que tiene su entorno de Cloud9 abierto.

    b. Ejecute el consumidor para comenzar a leer los datos del sensor de la secuencia.

    ./consumer -stream wildrydes-summary

    El consumidor imprimirá los mensajes que se envían a través de la aplicación de Kinesis Data Analytics cada minuto:

    {
      "Name": "Shadowfax",
      "StatusTime": "2018-03-18 03:20:00.000",
      "Distance": 362,
      "MinMagicPoints": 170,
      "MaxMagicPoints": 172,
      "MinHealthPoints": 146,
      "MaxHealthPoints": 149
    }
  • Paso 4. Experimentar con el productor

    Detenga el productor e inícielo de nuevo mientras ve el panel y el consumidor. Inicie múltiples productores con nombres de unicornios diferentes.


    a. Cambie a la pestaña en la que tiene su entorno de Cloud9 abierto.

    b. Detenga el productor presionando Control + C y observe cómo se detienen los mensajes.

    c. Vuelva a iniciar el productor y observe cómo se reanudan los mensajes.

    d. Presione el botón (+) y haga clic en Nuevo terminal para abrir una pestaña de terminal nuevo.

    e. Inicie otra instancia del productor en la pestaña web. Proporcione un nombre de unicornio específico y observe los puntos de datos para ambos unicornios en el resultado del consumidor:

    ./producer -name Bucephalus

    f. Verifique que observa múltiples unicornios en el resultado:

    {
        "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
    }
  • Resumen y consejos


    🔑 Amazon Kinesis Data Analytics le permite consultar datos de streaming o crear aplicaciones íntegramente de streaming con SQL, de manera que pueda obtener información procesable y satisfacer las necesidades de su empresa y sus clientes rápidamente.

    🔧 En este módulo, creó una aplicación de Kinesis Data Analytics que lee de la secuencia de Kinesis de datos de unicornios y emite una fila de resumen cada minuto.

En el siguiente módulo, utilizará AWS Lambda para procesar datos de la secuencia de Amazon Kinesis de wildrydes  creada anteriormente. Crearemos y configuraremos una función Lambda para leer la secuencia y escribir registros en una tabla de Amazon DynamoDB a medida que lleguen.