Dans ce module, vous allez créer une application Amazon Kinesis Data Analytics permettant de rassembler en temps réel les données des capteurs provenant du troupeau de licornes. L'application lira les données du flux Amazon Kinesis, calculera la distance totale parcourue ainsi que les valeurs minimales et maximales des points de vie et de magie pour chaque licorne actuellement active en Wild Ryde. En outre, elle produira ces statistiques cumulées dans un flux Amazon Kinesis toutes les minutes.

L'architecture de ce module est constituée d'une application Amazon Kinesis Data Analytics, de flux Amazon Kinesis source et destination, et de clients de ligne de commande producteurs et consommateurs.

L'application Amazon Kinesis Data Analytics traite les données du flux source Amazon Kinesis que nous avons créé dans le module précédent et les cumule toutes les minutes. Chaque minute, l'application enverra des données, notamment la distance totale parcourue au cours de la dernière minute ainsi que les valeurs minimales et maximales des points de vie et de magie pour chaque licorne de notre troupeau. Ces points de données seront envoyés à un flux de destination Amazon Kinesis dans le but d'être traités par d'autres composants de notre système.

Durée du module : 20 minutes

Services utilisés :
• Amazon Kinesis Data Streams
• Amazon Kinesis Data Analytics


  • Étape 1 : Création d'un flux Amazon Kinesis

    Utilisez la console Amazon Kinesis Data Streams pour créer un nouveau flux appelé wildrydes-summary avec 1 partition.


    a. Accédez à AWS Management Console, cliquez sur Services, puis sélectionnez Kinesis sous la rubrique Analytique.

    b. Sélectionnez Démarrer si un écran d'introduction vous y invite.

    c. Sélectionnez Créer un flux de données.

    d. Saisissez wildrydes-summarycomme nom de flux de Kinesis et 1 pour le nombre de partitions, puis sélectionnez Créer un flux Kinesis.

    e. Votre flux Kinesis deviendra ACTIF dans les prochaines 60 secondes et sera prêt à stocker les données diffusées en temps réel.

  • Étape 2 : Création d'une application Amazon Kinesis Data Analytics

    Construisez une application Amazon Kinesis Data Analytics lisant les données du flux wildrydes construit dans le module précédent et envoie chaque minute un objet JSON avec les attributs suivants :

    Name Nom de la licorne
    StatusTime ROWTIME fourni par Amazon Kinesis Data Analytics
    Distance Somme des distances parcourues par la licorne
    MinMagicPoints Le point de données minimal de l'attribut MagicPoints
    MaxMagicPoints Le point de données maximal de l'attribut MagicPoints
    MinHealthPoints Le point de données minimal de l'attribut HealthPoints
    MaxHealthPoints Le point de données maximal de l'attribut HealthPoints

    a. Basculez vers l'onglet où est ouvert votre environnement Cloud9.

    b. Exécutez le producteur pour qu'il commence à émettre des données de capteur vers le flux.

    ./producer

    La production active des données du capteur pendant que nous construisons notre application permet à Amazon Kinesis Data Analytics de détecter automatiquement notre schéma.

    c. Accédez à AWS Management Console, cliquez sur Services, puis sélectionnez Kinesis sous la rubrique Analytique.

    d. Sélectionnez Créer une application d'analyse.

    e. Tapez wildrydes comme Nom d'application, puis sélectionnez Créer une application.

    f. Sélectionnez Se connecter aux données en streaming.

    g. Sélectionnez wildrydes dans Flux Kinesis.

    h. Faites défiler vers le bas et cliquez sur Découvrir le schéma. Patientez un instant, et assurez-vous que le schéma s'est correctement découvert.

    Vérifiez que le schéma de découverte automatique comprend :

     

    Colonne Type de données
    Distance DOUBLE
    HealthPoints INTEGER
    Latitude DOUBLE
    Longitude DOUBLE
    MagicPoints INTEGER
    Name VARCHAR(16)
    StatusTime TIMESTAMP

    i. Sélectionnez Enregistrer et continuer.

    j. Sélectionnez Aller dans l'éditeur SQL. Cela ouvrira une session de requête interactive où nous pourrons créer une requête en plus de notre flux Amazon Kinesis en temps réel.

    k. Sélectionnez Oui, démarrer l'application. Votre application mettra 30 à 90 secondes à démarrer.

    l. Copiez et collez la requête SQL suivante dans l'éditeur 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";

    (cliquer pour agrandir)

    m. Sélectionnez Enregistrer et exécuter SQL. Chaque minute, des lignes apparaîtront contenant les données cumulées. Attendez l'apparition de ces lignes.

    n. Cliquez sur le lien Destination.

    o. Sélectionnez Se connecter à une destination.

    p. Sélectionnez wildrydes-summary dans le flux Kinesis.

    q. Sélectionnez DESTINATION_SQL_STREAM dans le nom de flux intégré à l'application.

    r. Sélectionnez Enregistrer et continuer.

    (cliquer pour agrandir)

  • Étape 3 : Lecture des messages du flux

    Utilisez la ligne de commande du consommateur pour afficher les messages du flux Kinesis et voir les données cumulées envoyées chaque minute.


    a. Basculez vers l'onglet où est ouvert votre environnement Cloud9.

    b. Exécutez le consommateur pour commencer à lire les données du capteur provenant du flux.

    ./consumer -stream wildrydes-summary

    Le consommateur affichera toutes les minutes les messages envoyés par l'application Kinesis Data Analytics :

    {
      "Name": "Shadowfax",
      "StatusTime": "2018-03-18 03:20:00.000",
      "Distance": 362,
      "MinMagicPoints": 170,
      "MaxMagicPoints": 172,
      "MinHealthPoints": 146,
      "MaxHealthPoints": 149
    }
  • Étape 4 : Expérience avec le producteur

    Arrêtez et démarrez le producteur tout en regardant le tableau de bord et le consommateur. Démarrez plusieurs producteurs avec différents noms de licorne.


    a. Basculez vers l'onglet où est ouvert votre environnement Cloud9.

    b. Arrêtez le producteur en appuyant sur Ctrl+C : vous remarquerez que les messages s'arrêtent.

    c. Redémarrez le producteur : vous remarquez que les messages reprennent.

    d. Appuyez sur le bouton (+) et cliquez sur Nouveau terminal pour ouvrir l'onglet du nouveau terminal.

    e. Démarrez une autre instance du producteur dans le nouvel onglet. Choisissez un nom de licorne spécifique et remarquez les points de données des deux licornes dans le résultat du consommateur :

    ./producer -name Bucephalus

    f. Vérifiez que plusieurs licornes s'affichent dans le résultat :

    {
        "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
    }
  • Récapitulatif et conseils


    🔑 Amazon Kinesis Data Analytics permet d'interroger les données de streaming ou de créer intégralement des applications de streaming avec SQL, de manière à obtenir des informations exploitables et à répondre rapidement aux besoins de votre entreprise et de vos clients.

    🔧 Dans ce module, vous avez créé une application Kinesis Data Analytics qui lit les données de licornes du flux Kinesis et envoie une ligne de résumé toutes les minutes.

Dans le module suivant, vous utiliserez AWS Lambda pour traiter des données depuis le flux wildrydes  Amazon Kinesis créé plus tôt. Nous créerons et configurerons une fonction Lambda pour lire à partir du flux et écrire des enregistrements qui arrivent dans une table Amazon DynamoDB.