Nach reiflicher Überlegung haben wir beschlossen, Amazon Kinesis Data Analytics für SQL-Anwendungen in zwei Schritten einzustellen:
1. Ab dem 15. Oktober 2025 können Sie keine neuen Kinesis Data Analytics for SQL-Anwendungen mehr erstellen.
2. Wir werden Ihre Anwendungen ab dem 27. Januar 2026 löschen. Sie können Ihre Amazon Kinesis Data Analytics for SQL-Anwendungen nicht starten oder betreiben. Ab diesem Zeitpunkt ist kein Support mehr für Amazon Kinesis Data Analytics for SQL verfügbar. Weitere Informationen finden Sie unter Einstellung von Amazon Kinesis Data Analytics für SQL-Anwendungen.
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Bewährte Methoden
In diesem Abschnitt werden bewährte Methoden bei der Arbeit mit Amazon-Kinesis-Data-Analytics-Anwendungen beschrieben.
Themen
Verwalten von Anwendungen
Halten Sie bei der Verwaltung von Amazon-Kinesis-Data-Analytics-Anwendungen die folgenden bewährten Methoden ein:
-
CloudWatch Amazon-Alarme einrichten — Sie können die von Kinesis Data Analytics bereitgestellten CloudWatch Metriken verwenden, um Folgendes zu überwachen:
-
Eingabebytes und Eingabedatensätze (Anzahl der Bytes und Datensätze in der Anwendung)
-
Ausgabebytes und Ausgabedatensätze
-
MillisBehindLatest
(Gibt an, mit welcher zeitlichen Differenz zur aktuellen Zeit eine Anwendung von der Streaming-Quelle liest.)
Wir empfehlen, dass Sie mindestens zwei CloudWatch Alarme für die folgenden Metriken für Ihre in Produktion befindlichen Anwendungen einrichten:
-
MillisBehindLatest
– Bei den meisten Fällen empfehlen wir, dass Sie den Alarm so einrichten, dass er ausgelöst wird, wenn die Anwendung mit den neuesten Daten eine Stunde lang durchschnittlich für eine Minute hinterher liegt. Für Anwendungen mit geringeren end-to-end Verarbeitungsanforderungen können Sie dies auf eine geringere Toleranz einstellen. Mit diesem Alarm können Sie sicherstellen, dass Ihre Anwendung die neuesten Daten liest.
-
-
Beschränken Sie die Anzahl der Produktionsanwendungen, die denselben Kinesis-Datenstrom lesen, auf zwei Anwendungen, um zu verhindern, dass die
ReadProvisionedThroughputException
-Ausnahmebedingung ausgelöst wird.Anmerkung
In diesem Fall bezeichnet Anwendung eine beliebigen Anwendung, die von der Streamingquelle lesen kann. Nur eine Kinesis Data Analytics Analytics-Anwendung kann aus einem Firehose-Lieferstream lesen. Viele Anwendungen können jedoch aus einem Kinesis-Datenstream lesen, z. B. eine Kinesis Data Analytics-Anwendung oder. AWS Lambda Der empfohlene Anwendungsgrenzwert gilt für alle Anwendungen, die Sie zum Lesen von Daten aus einer Streaming-Quelle konfigurieren.
Amazon-Kinesis-Data-Analytics liest für jede Anwendung eine Streaming-Quelle ca. einmal pro Sekunde aus. Anwendungen, die mit Ihrer Leseleistung zurückfallen, können Daten möglicherweise mit einer schnelleren Rate einlesen, um aufzuholen. Um Anwendungen einen genügend großen Durchsatz bereitzustellen, damit sie aufholen können, beschränken Sie die Anzahl der Anwendungen, die von derselben Datenquelle lesen.
-
Beschränken Sie die Anzahl der Produktionsanwendungen, die aus demselben Firehose-Lieferstream lesen, auf eine Anwendung.
Ein Firehose-Lieferstream kann in Ziele wie Amazon S3 und Amazon Redshift schreiben. Er kann auch als Streaming-Quelle für Ihre Kinesis Data Analytics-Anwendung dienen. Daher empfehlen wir, nicht mehr als eine Kinesis Data Analytics Analytics-Anwendung pro Firehose-Lieferstream zu konfigurieren. So stellen Sie sicher, dass der Bereitstellungs-Stream auch für andere Ziele bereitstellen kann.
Skalierungsanwendungen
Richten Sie Ihre Anwendung für Ihre zukünftigen Skalierungsanforderungen ein, indem Sie den Standardwert (1) für die Anzahl von In-Application-Eingabe-Streams erhöhen. Wir empfehlen die folgende Sprachauswahl basierend auf dem Durchsatz Ihrer Anwendung:
Verwenden Sie mehrere Streams und Kinesis-Data-Analytics-for-SQL-Anwendungen, wenn die Skalierungsanforderungen Ihrer Anwendung 100 MB/Sekunde überschreiten.
Verwenden Sie Managed Service für Apache Flink-Anwendungen, wenn Sie einen einzelnen Stream und eine einzelne Anwendung verwenden möchten.
Anmerkung
Wir empfehlen, die InputProcessing.OkBytes
Metrik Ihrer Anwendung regelmäßig zu überprüfen, damit Sie im Voraus planen können, mehrere SQL-Anwendungen zu verwenden oder zu Managed- zu migrieren. flink/latest/java/ if your application’s projected input throughput exceeds
100 MB/sec
Überwachen von Anwendungen
Wir empfehlen, einen CloudWatch Alarm zu aktivieren, InputProcessing.OkBytes
sodass Sie benachrichtigt werden, wenn sich Ihre Anwendung dem Grenzwert für den Eingabedurchsatz nähert. Dies kann nützlich sein, da Sie Ihre Anwendungsabfrage aktualisieren können, um einen höheren Durchsatz zu erzielen und so Gegendruck und Verzögerungen bei der Analyse zu vermeiden. Weitere Informationen finden Sie unter Fehlerbehebung. Dies kann auch nützlich sein, wenn Sie über einen Mechanismus zur Reduzierung des Durchsatzes im Upstream-Bereich verfügen.
Der größte Durchsatz, den wir für einen einzelnen In-Application-Stream empfehlen, liegt je nach Komplexität der Abfrage der Anwendung zwischen 2 und 20 MB/s.
Der maximale Streaming-Durchsatz, den eine einzelne Kinesis Data Analytics for SQL-Anwendung verarbeiten kann, beträgt ungefähr 100 MB/s. Dies setzt voraus, dass Sie die Anzahl der In-App-Streams auf den Höchstwert von 64 erhöht haben und dass Sie Ihr KPU-Limit auf über 8 erhöht haben. Weitere Informationen finden Sie unter Limits.
Anmerkung
Wir empfehlen, die InputProcessing.OkBytes
Metrik Ihrer Anwendung regelmäßig zu überprüfen, damit Sie im Voraus planen können, mehrere SQL-Anwendungen zu verwenden oder zu Managed- flink/latest/java/ if your application’s projected input throughput exceeds
100 MB/sec zu migrieren.
Definieren des Eingabeschemas
Bei der Konfiguration von Anwendungseingabe in der Konsole müssen Sie zunächst eine Streaming-Quelle angeben. Die Konsole verwendet die Erkennungs-API (siehe DiscoverInputSchema), um ein Schema abzuleiten, indem Datensätze von der Streaming-Quelle gesampelt werden. Das Schema definiert u. a. Namen und Datentypen der Spalten in dem resultierenden In-Application-Stream. Die Konsole zeigt das Schema an. Wir empfehlen, mit diesem abgeleiteten Schema wie folgt vorzugehen:
-
Testen Sie das abgeleitete Schema gründlich. Bei dem Erkennungsprozess werden nur Proben der Datensätze aus der Streaming-Quelle verwendet, um daraus ein Schema abzuleiten. Wenn Ihre Streaming-Quelle über zahlreiche Datensatztypen verfügt, wurden möglicherweise nicht alle Datensatztypen von der Erkennungs-API erfasst. Dadurch kann ein Schema entstehen, dass die Daten in der Streaming-Quelle nicht genau widerspiegelt.
Wenn Ihre Anwendung gestartet wird, können diese nicht berücksichtigten Datensatztypen zu Fehlern bei der Strukturanalyse führen. Amazon-Kinesis-Data-Analytics sendet diese Datensätze an den In-Application-Fehler-Stream. Um Fehler bei der Strukturanalyse zu reduzieren, empfehlen wir, das abgeleitete Schema interaktiv in der Konsole zu testen und den In-Application-Stream auf ausgelassene Datensätze hin zu überwachen.
-
Die Kinesis Data Analytics API unterstützt für Spalten in der Eingabekonfiguration nicht die Angabe einer
NOT NULL
-Einschränkung. Wenn Sie in Ihrem In-Application-Stream für bestimmte SpaltenNOT NULL
-Einschränkungen festlegen möchten, erstellen Sie diese In-Application-Streams in Ihrem Anwendungscode. Anschließend können Sie Daten von einem In-Application-Stream in einen anderen kopieren und dort die Beschränkung durchsetzen.Bei jedem Versuch, Zeilen mit
NULL
-Werten einzufügen, wenn ein Wert erforderlich ist, wird ein Fehler ausgegeben. Kinesis Data Analytics sendet diese Fehler an den In-App-Fehler-Stream. -
Verallgemeinern Sie Datentypen, die bei dem Erkennungsprozess abgeleitet wurden. Der Erkennungsvorgang empfiehlt Spalten und Datentypen basierend auf einer Zufallsauswahl von Datensätzen aus der Streaming-Quelle. Wir empfehlen, dass Sie die Datensätze sorgfältig überprüfen und sie für alle möglichen Fälle von Datensätzen in der Eingabe generalisieren. Auf diese Weise wird sichergestellt, dass bei der Strukturanalyse während der Ausführung der Anwendung weniger Fehler auftreten. Wenn beispielsweise ein Schema mit einem Spaltentyp
SMALLINT
abgeleitet wurde, sollten Sie ihn ggf. in einenINTEGER
ändern. -
Verwenden Sie SQL-Funktionen in Ihrem Anwendungscode, um unstrukturierte Daten oder Spalten zu verarbeiten. Möglicherweise haben Sie unstrukturierte Daten oder Spalten in Ihrer Eingabe, z. B. Protokolldaten. Beispiele finden Sie unter Beispiel: Werte transformieren DateTime . Ein Ansatz zur Verarbeitung dieser Art von Daten ist, das Schema mit nur einem Spaltentyp
VARCHAR(N)
zu definieren, wobeiN
die längstmögliche Zeile ist, die Sie in Ihrem Stream erwarten. Anschließend können Sie dann die eingehenden Datensätze mit Ihrer Anwendung einlesen und mit denString
- undDate Time
-Funktionen analysieren und so ein Schema für die Rohdaten gewinnen. -
Stellen Sie sicher, dass Sie bei der Verarbeitung Streaming-Quelldaten, die tiefer als zwei Ebenen verschachtelt sind, vollständig abarbeiten. JSON-Quelldaten können verschachtelt sein. Die Erkennungs-API leitet ein Schema ab, das die Eingabe auf eine Verschachtelungsebene reduziert. Die Erkennungs-API versucht auch bei zwei Schachtelungsebenen, diese auf eine Ebene zu reduzieren. Bei mehr als zwei Schachtelungsebenen kann die Strukturtiefe nur bedingt reduziert werden. Um verschachtelte Strukturen vollständig zu verarbeiten, müssen Sie das abgeleitete Schema manuell an Ihre Anforderungen anpassen. Verwenden Sie dazu eine der beiden folgenden Strategien:
-
Verwenden Sie den JSON-Zeilenpfad, um genau die benötigten Schlüssel-Wert-Paare für Ihre Anwendung auszulesen. Der JSON-Zeilenpfad gibt einen Zeiger auf das jeweilige Schlüssel-Wert-Paar in Ihrer Anwendung zurück. Diese Strategie funktioniert bei beliebiger Verschachtelungstiefe.
-
Verwenden Sie den JSON-Zeilenpfad, um komplexe JSON-Objekte und herausziehen. Verwenden Sie anschließend in Ihrem Anwendungscode die Funktionen zur String-Manipulation, um bestimmte Daten, die Sie benötigen, zu exzerpieren.
-
Herstellen einer Verbindung mit Ausgaben
Wir empfehlen, dass jede Anwendung über mindestens zwei Ausgaben verfügen sollte:
-
Verwenden Sie das erste Ziel, um die Ergebnisse Ihrer SQL-Abfragen auszugeben.
-
Verwenden Sie das zweite Ziel, um den gesamten Fehlerstream einzufügen und ihn über einen Firehose-Lieferstream an einen S3-Bucket zu senden.
Anwendungscode erstellen
Wir empfehlen Folgendes:
-
Geben Sie aus den folgenden Gründen in der SQL-Anweisung keine Zeitfenster an, die größer als eine Stunde sind:
-
Anwendungen müssen gelegentlich neu gestartet werden, entweder aufgrund einer Aktualisierung oder aus internen Kinesis Data Analytics-spezifischen Gründen. Bei einem Neustart müssen alle in dem Zeitfenster enthaltenen Daten erneut aus der Streaming-Datenquelle eingelesen werden. Dies dauert eine Weile, bevor Kinesis Data Analytics Ausgaben für dieses Fenster produzieren kann.
-
Kinesis Data Analytics muss für diese Dauer alles, was im Zusammenhang mit der Anwendung steht, inklusive der relevanten Daten, bereithalten. Dies verbraucht eine erhebliche Menge an Kinesis Data Analytics-Verarbeitungseinheiten.
-
-
Halten Sie während der Entwicklung die Fenstergröße in Ihren SQL-Anweisungen klein, um schneller Ergebnisse zu erhalten. Wenn Sie die Anwendung in der Produktionsumgebung bereitstellen, können Sie die Fenstergröße geeignet anpassen.
-
Verwenden Sie anstelle einer einzigen komplexen SQL-Anweisung mehrere Anweisungen, die in jedem Schritt Zwischenergebnisse in In-Application-Streams speichern. Dies vereinfacht auch das Debugging.
-
Bei der Verwendung von rollierenden Zeitfenstern empfehlen wir, dass Sie zwei Fenster verwenden: eines für die Verarbeitungszeit und eines für die logische Zeit (Zeitpunkt der Erfassung oder des Ereignisses). Weitere Informationen finden Sie unter Zeitstempel und die ROWTIME-Spalte.
Testen von Anwendungen
Wenn Sie das Schema oder den Anwendungscode für Ihre Kinesis Data Analytics-Anwendung ändern, empfehlen wir Ihnen, die Änderungen mit einer Testanwendung zu überprüfen, bevor Sie diese für die Produktion bereitstellen.
Einrichten einer Testanwendung
Sie können eine Testanwendung entweder über die Konsole oder mithilfe einer AWS CloudFormation -Vorlage einrichten. Mithilfe einer AWS CloudFormation Vorlage können Sie sicherstellen, dass die Codeänderungen, die Sie an der Testanwendung und Ihrer Live-Anwendung vornehmen, konsistent sind.
Beim Einrichten einer Testanwendung können Sie die Anwendung entweder mit Ihren Live-Daten verbinden oder einen Stream zu Testzwecken mit Mock-Daten befüllen. Wir empfehlen für das Befüllen eines Streams mit Mock-Daten zwei Methoden:
Verwenden Sie den Kinesis Data Generator (KDG)
. Der KDG verwendet eine Datenvorlage, mit der zufällige Daten an einen Kinesis-Stream gesendet werden. Er ist einfach zu verwenden, eignet sich jedoch nicht zum Testen von komplexen Beziehungen zwischen Datenelementen wie beispielsweise in Anwendungen, die Hotspots oder Anomalien erkennen. Verwenden Sie eine benutzerdefinierte Python-Anwendung, um komplexere Daten an einen Kinesis-Datenstrom zu senden. Mithilfe einer Python-Anwendung können Sie komplexe Beziehungen zwischen Datenelementen wie Hotspots oder Anomalien erzeugen. Eine Python-Beispielanwendung, die Daten in Clusterform an einen Daten-Hotspot sendet, finden Sie unter Beispiel: Erkennen von Hotspots in einem Stream (HOTSPOTS-Funktion).
Wenn Sie Ihre Testanwendung ausführen, zeigen Sie Ihre Ergebnisse mit einem Ziel an (z. B. einem Firehose-Lieferstream zu einer Amazon Redshift Redshift-Datenbank), anstatt Ihren In-Application-Stream auf der Konsole anzusehen. Die in der Konsole angezeigten Daten sind ein Auszug aus dem Stream und enthalten nicht alle Datensätze.
Testen von Schemaänderungen
Wenn Sie Änderungen am Eingabe-Stream-Schema einer Anwendung vornehmen, überprüfen Sie mit der Testanwendung Folgendes:
Die Daten aus Ihrem Stream werden in den richtigen Datentyp umgewandelt. Stellen Sie beispielsweise sicher, dass Datum-/Uhrzeit-Angaben nicht als Zeichenfolge in die Anwendung aufgenommen werden.
Die Daten werden in dem gewünschten Datentyp analysiert und umgewandelt. Wenn bei der Analyse oder Umwandlung Fehler auftreten, können Sie diese in der Konsole ausgeben oder dem Fehler-Stream ein Ziel zuweisen und die Fehler im Zielspeicher betrachten.
Die Datenfelder für Zeichendaten sind ausreichend lang und die Zeichendaten werden in der Anwendung nicht abgeschnitten. Sie können die Datensätze in Ihrem Zielspeicher überprüfen, um sicherzustellen, dass die Anwendungsdaten nicht abgeschnitten werden.
Testen von Codeänderungen
Um Änderungen an Ihrem SQL-Code zu testen, müssen Sie die Domain Ihrer Anwendung kennen. Sie müssen feststellen können, welche Ausgabe geprüft werden und wie eine korrekte Ausgabe aussehen muss. Informationen zu potenziellen Problembereichen beim Prüfen von Änderungen am SQL-Anwendungscode finden Sie unter Fehlerbehebung bei Amazon-Kinesis-Data-Analytics for SQL-Anwendungen.