In diesem Modul werden Sie eine Amazon Kinesis Data Analytics-Anwendung erstellen, um Sensordaten von der Einhorn-Flotte in Echtzeit zu aggregieren. Die Anwendung wird aus dem Amazon Kinesis-Stream lesen und die zurückgelegte Gesamtentfernung sowie die minimalen und maximalen Werte für Integritäts- und magische Punkte für jedes Einhorn berechnen, das derzeit auf einem Wild Ryde unterwegs ist. Diese aggregierten Statistiken wird sie dann jede Minute an einen Amazon Kinesis-Stream ausgeben.

Die Architektur für dieses Modul umfasst eine Amazon Kinesis Data Analytics-Anwendung, Amazon Kinesis-Quell- und Ziel-Streams sowie die Producer- und Consumer-Befehlszeilen- Clients .

Die Amazon Kinesis Data Analytics-Anwendung verarbeitet Daten aus dem Amazon Kinesis-Quell-Stream, den wir im vorherigen Modul erstellt haben, und aggregiert sie einmal pro Minute. Jede Minute gibt die Anwendung Daten aus, darunter die in der letzten Minute zurückgelegte Gesamtentfernung und die Minimal- und Maximalwerte von Integritäts- und magischen Punkten jedes Einhorns in der Flotte. Diese Datenpunkte werden zur Verarbeitung durch andere Komponenten in unserem System an einen Amazon Kinesis-Ziel-Stream gesendet.

Veranschlagte Zeit für das Modul: 20 Minuten

Verwendete Services:
• Amazon Kinesis Data Streams
• Amazon Kinesis Data Analytics


  • Schritt 1: Erstellen eines Amazon Kinesis-Streams

    Verwenden Sie die Amazon Kinesis Data Streams-Konsole, um einen neuen Stream namens wildrydes-summary mit 1 Shard zu erstellen.


    a. Öffnen Sie die AWS-Managementkonsole, klicken Sie auf Services und wählen Sie dann unter "Analysen" Kinesis aus.

    b. Wählen Sie Erste Schritte aus, wenn ein Einführungsbildschirm angezeigt wird.

    c. Wählen Sie Datenstrom erstellen aus.

    d. Geben Sie wildrydes-summary beim Kinesis-Stream-Namen und 1 bei Anzahl der Shards ein. Wählen Sie dann Kinesis-Stream erstellen aus.

    e. Innerhalb von 60 Sekunden ist Ihr Kinesis-Stream AKTIV und bereit zum Speichern von Echtzeit-Streaming-Daten.

  • Schritt 2: Erstellen einer Amazon Kinesis Data Analytics-Anwendung

    Erstellen Sie eine Amazon Kinesis Data Analytics-Anwendung, die Daten aus dem im vorherigen Modul erstellten Stream wildrydes ausliest und jede Minute ein JSON-Objekt ausgibt, das folgende Attribute aufweist:

    Name Name des Einhorns
    StatusTime ROWTIME, von Amazon Kinesis Data Analytics bereitgestellt
    Distance Die Strecke, die das Einhorn insgesamt zurücklegt
    MinMagicPoints Der minimale Datenpunkt des Attributs MagicPoints
    MaxMagicPoints Der maximale Datenpunkt des Attributs MagicPoints
    MinHealthPoints Der minimale Datenpunkt des Attributs HealthPoints
    MaxHealthPoints Der maximale Datenpunkt des Attributs HealthPoints

    a. Wechseln Sie zu dem Tab, in dem Sie Ihre Cloud9-Umgebung geöffnet haben.

    b. Führen Sie den Producer aus, um Sensordaten an den Stream zu übertragen.

    ./producer

    Sensordaten werden schon erzeugt, während wir unsere Anwendung erstellen, sodass Amazon Kinesis Data Analytics unser aktuelles Schema automatisch erkennt.

    c. Öffnen Sie die AWS-Managementkonsole, klicken Sie auf Services und wählen Sie dann unter "Analysen" Kinesis aus.

    d. Wählen Sie Analyseanwendung erstellen aus.

    e. Geben Sie unter Anwendungsname wildrydes ein und wählen Sie dann Anwendung erstellen aus.

    f. Wählen Sie Streaming-Daten verbinden aus.

    g. Wählen Sie wildrydes in Kinesis-Stream aus.

    h. Blättern Sie nach unten und klicken Sie auf Schema suchen. Warten Sie einen Moment und vergewissern Sie sich, dass das Schema automatisch erkannt wurde.

    Prüfen Sie, dass das automatisch erkannte Schema Folgendes enthält:

     

    Spalte Datentyp
    Distance DOUBLE
    HealthPoints INTEGER
    Latitude DOUBLE
    Longitude DOUBLE
    MagicPoints INTEGER
    Name VARCHAR(16)
    StatusTime TIMESTAMP

    i. Klicken Sie auf Speichern und weiter.

    j. Klicken Sie auf Weiter zu SQL-Editor. Diese Auswahl startet eine interaktive Abfragesitzung, in der Sie eine Abfrage über den Amazon Kinesis-Echtzeit-Stream ausführen können.

    k. Klicken Sie auf Ja, Anwendung starten. Der Start der Anwendung dauert 30 bis 90 Sekunden.

    l. Fügen Sie die folgende SQL-Abfrage in den SQL-Editor ein:

     

    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";

    (zum Vergrößern klicken)

    m. Klicken Sie auf Speichern und SQL ausführen. Jede Minute werden neue Zeilen mit den aggregierten Daten hinzugefügt. Warten Sie, bis neue Zeilen hinzukommen.

    n. Klicken Sie auf den Link Ziel.

    o. Wählen Sie Mit einem Ziel verbinden aus.

    p. Wählen Sie wildrydes-summary in Kinesis-Stream aus.

    q. Wählen Sie DESTINATION_SQL_STREAM in In-application stream name aus.

    r. Klicken Sie auf Speichern und weiter.

    (zum Vergrößern klicken)

  • Schritt 3: Lesen von Meldungen aus dem Stream

    Verwenden Sie den Befehlszeilen-Verbraucher, um Meldungen aus dem Kinesis-Stream und die jede Minute eingehenden aggregierten Daten anzuzeigen.


    a. Wechseln Sie zu dem Tab, in dem Sie Ihre Cloud9-Umgebung geöffnet haben.

    b. Führen Sie den Verbraucher aus, um mit dem Lesen von Sensordaten aus dem Stream zu beginnen.

    ./consumer -stream wildrydes-summary

    Der Verbraucher gibt die im Minutentakt von der Kinesis Data Analytics-Anwendung gesendeten Meldungen aus:

    {
      "Name": "Shadowfax",
      "StatusTime": "2018-03-18 03:20:00.000",
      "Distance": 362,
      "MinMagicPoints": 170,
      "MaxMagicPoints": 172,
      "MinHealthPoints": 146,
      "MaxHealthPoints": 149
    }
  • Schritt 4: Experimentieren mit dem Producer

    Stoppen und starten Sie den Producer, während Sie das Dashboard und den Verbraucher beobachten. Starten Sie mehrere Producer mit unterschiedlichen Einhornnamen.


    a. Wechseln Sie zu dem Tab, in dem Sie Ihre Cloud9-Umgebung geöffnet haben.

    b. Stoppen Sie den Producer, indem Sie Strg+C drücken. Sie werden sehen, dass die Meldungen stoppen.

    c. Starten Sie den Producer wieder. Sie werden sehen, dass die Meldungen wieder erscheinen.

    d. Klicken Sie auf die Schaltfläche (+) und dann auf Neues Terminal, um ein neues Terminal-Tab zu öffnen.

    e. Starten Sie im neuen Tab eine neue Instance des Producers. Geben Sie einen bestimmten Einhornnamen an. Nun werden Datenpunkte für beide Einhörner in der Ausgabe des Verbrauchers angezeigt:

    ./producer -name Bucephalus

    f. Prüfen Sie, ob Sie mehrere Einhörner in der Ausgabe sehen:

    {
        "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
    }
  • Zusammenfassung und Tipps


    🔑 Mit Amazon Kinesis Data Analytics können Sie Streaming-Daten abfragen oder umfassende Streaming-Anwendungen mit SQL erstellen, damit Sie praktisch umsetzbare Erkenntnisse gewinnen und umgehend auf die Anforderungen Ihres Unternehmens und Ihrer Kunden reagieren können.

    🔧 In diesem Modul haben Sie eine Kinesis Data Analytics-Anwendung erstellt, die Einhorndaten aus einem Kinesis-Stream ausliest und jede Minute eine Zeile mit einer Zusammenfassung versendet.

Im nächsten Modul verwenden Sie AWS Lambda zur Verarbeitung von Daten aus dem zuvor erstellten wildrydes Amazon Kinesis-Stream. Wir erstellen und konfigurieren eine Lambda-Funktion zum Auslesen des Streams und Schreiben von eingehenden Datensätzen in eine Amazon DynamoDB-Tabelle.