Allgemeines

F: Was ist Amazon Kinesis Data Analytics?
Amazon Kinesis Data Analytics ist der einfachste Weg, um Streaming-Daten zu analysieren, aussagekräftige Erkenntnisse zu gewinnen und auf Ihre Geschäfts- und Kundenbedürfnisse in Echtzeit zu reagieren. Amazon Kinesis Data Analytics reduziert die Komplexität Streaming-Anwendungen mit anderen AWS-Services zu erstellen, zu verwalten und zu integrieren. Sie können schnell SQL-Abfragen und anspruchsvollen Java-Anwendungen erstellen, die integrierte Vorlagen und Operatoren für gängige Verarbeitungsfunktionen zum Organisieren, Transformieren, Aggregieren und Analysieren von Daten jeder Größenordnung nutzen.
 
Amazon Kinesis Data Analytics führt alles Erforderliche durch, damit Ihre Abfragen durchgehend ausgeführt werden können. Außerdem passt es sich automatisch an den Umfang und den Durchsatz Ihrer eingehenden Daten an. Mit Amazon Kinesis Data Analytics zahlen Sie nur für die Ressourcen, die von Streaming-Anwendungen benötigt werden. Es gibt weder Mindest- noch Einrichtungsgebühr.
 
F: Was ist die Stream-Verarbeitung in Echtzeit und wofür wird sie benötigt?
Aufgrund des explosiven Wachstums der Echtzeit-Datenquellen erhalten wir Daten mit hoher Geschwindigkeit. Ob es sich um Protokolldaten von Mobil- und Web-Anwendungen, um Kaufdaten von E-Commerce-Websites oder um Sensordaten von IoT- Geräten handelt, die Daten liefern Unternehmen Informationen über das, was ihre Kunden, Organisationen und Unternehmensbereiche gerade jetzt tun. Indem Sie Sichtbarkeit in diese Daten erhalten, wenn diese ankommen, können Sie Ihr Geschäft in Echtzeit überwachen und schnell neue Geschäftsmöglichkeiten ausnutzen. Zum Beispiel können Sie Sie Werbeangebote Kunden anbieten, basierend auf wo sie zu einem gegebenen Zeitpunkt sein könnten, oder soziale Stimmung und sich verändernde Kunden überwachen, um neuen Möglichkeiten zu identifizieren und entsprechend zu handeln.
 
Um diese neuen Chancen zu nutzen, benötigen Sie eine Sammlung von Analyse-Tools zum Erfassen und Analysieren von Streaming-Daten in Echtzeit, die sich von denen unterscheiden, die traditionell für statische, gespeicherte Daten zur Verfügung standen. Für traditionelle Analysen erfassen Sie die Daten, speichern sie in einer Datenbank und analysieren sie Stunden, Tage oder Wochen später. Die Analyse von Echtzeitdaten erfordert eine unterschiedliche Methode sowie unterschiedliche Tools und Services. Statt Datenbankabfragen von gespeicherten Daten auszuführen, verarbeiten Services für Streaming-Analysen die Daten kontinuierlich, bevor sie gespeichert werden. Streaming-Daten kommen mit unglaublicher Geschwindigkeit an, die sich jederzeit nach oben oder unten ändern kann. Services für Streaming-Analysen müssen diese Daten bei Empfang verarbeiten, oft mit Geschwindigkeiten von Millionen von Ereignissen pro Stunde.
 
F: Was kann ich mit Kinesis Data Analytics tun?
Sie können Kinesis Data Analytics für viele Verwendugnsfälle nutzen, um Daten kontinuierlich zu verarbeiten und Einsichten in Sekunden oder Minuten zu erhalten, statt Tage oder sogar Wochen zu warten. Kinesis Data Analytics versetzt Sie in die Lage, schnell Ende-zu-Ende-Anwendungen für die Stream-Verarbeitung in den Bereichen Protokollanalyse, Clickstream-Analyse, Internet of Things (IoT), Ad Tech, Gaming und mehr zu erstellen. Die drei gängigsten Anwendungsfälle sind Streaming Extract-Transform-Load (ETL), kontinuierliche Metrikengenerierung und zugängliche Analytiken.
 
Streaming von ETL
Das Streaming von ETL-Anwendungen ermöglicht Ihnen Raw Data zu säubern, anzureichern, zu organisieren und zu transformieren, vor dem Laden Ihres Datensees oder Datenwarenhauses in Echtzeit, und dabei Stapel-ETL-Schritte zu reduzieren oder eliminieren. Diese Anwendungen können kleine Datensätze in größere Dateien vor der Lieferung buffern, und komplexe Verbindungen über Streams und Tabellen hinweg durchführen. Zum Beispiel können Sie eine Anwendung erstellen, die kontinuierlich IoT-Sensorendaten liest, die in Amazon Kinesis Data Streams gespeichert sind, die Daten nach Sensortyp organisieren, Duplikate entfernen, Daten nach einem spezifischen Schema zu normalisieren und dann die Daten auf Amazon S3 zu liefern.
 
Kontinuierliche Erstellung von Metriken
Die kontinuierliche Erstellung von Metriken versetzt Sie in die Lage, zu überwachen und zu verstehen, wie sich die Trends Ihrer Daten im Zeitverlauf entwickeln. Ihre Anwendungen können Streaming-Daten in kritische Informationen zusammenfassen und sich nahtlos mit Datenbanken und Überwachungsservices zur Berichterstattung integrieren, um Ihren Anwendungen und Nutzern in Echtzeit zu dienen. Mit Kinesis Data Analytics können Sie SQL-Code oder Java nutzen, der kontinuierlich für bestimmte Zeitfenster Zeitreihenanalysen erstellt. Sie können beispielsweise ein Live-Leaderboard für ein Mobil-Computerspiel erstellen, indem Sie jede Minute die besten Spieler berechnen und das Ergebnis an Amazon DynamoDB senden. Sie können den Datenverkehr zu Ihrer Website verfolgen, indem Sie die Zahl der eindeutigen Website-Besucher alle 5 Minuten berechnen und die verarbeiteten Ergebnisse dann an Amazon Redshift senden.
 
Zugängliche Echtzeitanalysen
Zugängliche Echtzeitanalysen-Anwendungen senden Alarme oder Benachrichtigungen in Echtzeit, wenn bestimmte Metriken vordefinierte Schwellenwerte erreichen oder Ihre Anwendung mithilfe von Algorithen für Machine Learning Anomalien entdeckt. Diese Anwendungen ermöglichen Ihnen sofort auf Veränderungen in Ihrem Geschäft in Echtzeit zu reagieren, wie Nutzer-Abandonnierung für mobile Apps vorherzusagen und abbauende System zu identifizieren. Eine Anwendung könnte zum Beispiel die Verfügbarkeit oder die Erfolgsquote einer kundenseitigen API im Zeitverlauf berechnen und dann die Ergebnisse an Amazon CloudWatch senden. Sie könnten eine weitere Anwendung erstellen, die nach Ereignissen sucht, die bestimmte Kriterien erfüllen, und dann mithilfe von Amazon Kinesis Data Streams und Amazon Simple Notification Service (SNS) automatisch die richtigen Kunden benachrichtigt.
 
F: Welches sind die ersten Schritte bei einem Einstieg in Java-Anwendungen für Kinesis Data Analytics?
Melden Sie sich bei der Amazon Kinesis Data Analytics-Konsolean und erstellen Sie eine neue Anwendung für die Stream-Verarbeitung. Sie können auch die AWS CLI und die AWS SDKs verwenden. Sobald Sie eine Anwendung erstellen, gehen Sie zu Ihrer bevorzugten IDE, verbinden Sie sich mit AWS und installieren Sie die Open-Source-Java-Bibliotheken. Die Open-Source-Java-Bibliotheken basieren auf Apache Flink, einem Open-Source-Framework und -Engine für die Verarbeitung von Daten-Streams, sowie AWS SDKs. Die erweiterbaren Bibliotheken enthalten über 25 vorgefertigte Operatoren zur Stream-Verarbeitung wie „window“ und „aggregate“ sowie AWS-Service-Integrationen wie Amazon Kinesis Data Streams und Amazon Kinesis Data Firehose. Nach der Entwicklung laden Sie Ihren Code zu Amazon Kinesis Data Analytics hoch und die Services führen alles Erforderliche durch, damit Ihre Echtzeit-Anwendungen durchgehend ausgeführt werden können. Außerdem skaliert es automatisch mit dem Umfang und dem Durchsatz Ihrer eingehenden Daten.
 
F: Welches sind die ersten Schritte bei einem Einstieg in SQL-Anwendungen für Kinesis Data Analytics?
Melden Sie sich bei der Amazon Kinesis Data Analytics-Konsolean und erstellen Sie eine neue Anwendung für die Stream-Verarbeitung. Sie können auch die AWS CLI und die AWS SDKs verwenden. Sie können eine Ende-zu-Ende-Anwendung mit drei einfachen Schritten erstellen: 1. Eingehenden Daten-Stream konfigurieren, 2. SQL-Abfragen schreiben, 3. Festlegen, wohin die Ergebnisse geliefert werden sollen. Kinesis Data Analytics erkennt Standard-Datenformate wie JSON, CSV und TSV und erstellt automatisch ein Basisschema. Sie können dieses Schema verfeinern. Wenn Ihre Daten nicht strukturiert sind, können Sie mit unserem intuitiven Schema-Editor ein neues Schema definieren. Der Service wendet das Schema dann auf den Eingabe-Stream an und gibt ihm die Form einer SQL-Tabelle, die kontinuierlich aktualisiert wird, sodass Sie mit Standard-SQL-Abfragen arbeiten können. Zum Erstellen Ihrer Abfragen verwenden Sie unseren SQL-Editor.
 
Der SQL-Editor enthält alle wichtigen Funktionen einschließlich Syntaxprüfung und Test mit Live-Daten. Weiterhin stellen wir Ihnen Vorlagen mit SQL-Code bereit, die Sie für alles von einem einfachen Stream-Filter bis hin zu komplexen Anomalieentdeckungen und top-K-Analysen verwenden können. Kinesis Data Analytics übernimmt die Bereitstellung und die elastische Skalierung der gesamten Infrastruktur für die Verarbeitung eines beliebigen Datendurchsatzes. Sie brauchen keine Infrastruktur zu planen, bereitzustellen oder zu verwalten.
 
F: Welche Einschränkungen gelten für Kinesis Data Analytics?
Kinesis Data Analytics skaliert Ihre Anwendung elastisch, um sie an den Datendurchsatz Ihres Quell-Streams und die Komplexität Ihrer Abfrage für die meisten Szenarien anzupassen. Sie finden ausführliche Informationen zu den Service-Limits unter Limits in dem Amazon Kinesis Data Analytics for SQL Developer Handbuch. Sie finden ausführliche Informationen zu den Service- Limits für Java-Anwendungen im Abschnitt Limits im Amazon Kinesis Data Analytics for Java Developer Handbuch.

Wichtige Konzepte

F: Was ist eine Kinesis Data Analytics-Anwendung?
Eine Anwendung ist die Kinesis Data Analytics-Entität, mit der Sie arbeiten. Kinesis Data Analytics-Anwendungen lesen und verarbeiten kontinuierlich Streaming-Daten in Echtzeit. Sie schreiben den Anwendungscode mit SQL oder Java, um die eingehenden Streaming-Daten zu verarbeiten und die Ausgabedaten zu erzeugen. Kinesis Data Analytics liefert dann die Ausgabe an ein konfiguriertes Ziel.
 
Jede Anwendung besteht aus drei Primärkomponenten:
 
Eingabedaten – die Streaming-Quelle für Ihre Anwendung. In der Eingabekonfiguration ordnen Sie die Streaming-Quelle einem In-Application-Daten-Stream(s) zu. Daten fließen von Ihren Datenquellen in Ihre In-Application-Daten-Streams. Sie verarbeiten Daten von diesen In-Application-Daten-Streams mit Ihrem Anwendungscode, der verarbeitete Daten zu weitergehenden In-Application-Daten-Streams oder Zielen sendet. Sie fügen Eingaben im Anwendungscode für Java-Anwendungen und über die API für SQL-Anwendungen hinzu.
 
Anwendungscode – Eine Reihe von Java-Operatoren oder SQL-Anweisungen, die Eingabedaten verarbeiten und Ausgabedaten erzeugen. In seiner einfachsten Form kann Anwendungscode ein einzelner Java-Operator oder eine SQL-Anweisung sein, die von einem In-Application-Daten-Stream mit einer Streaming-Quelle liest und zu einem In-Application-Daten-Stream mit einer Ausgabe schreibt. Sie können Java- oder SQL-Code schreiben, der den anfänglichen In-Application-Daten-Stream in mehrere Streams aufteilt und zusätzliche Logik auf diese separaten Streams anwendet.
 
Ausgabedaten – Sie können einen oder mehrere In-Application-Streams erstellen, in denen Zwischenergebnisse gespeichert werden. Falls erforderlich, können Sie dann eine Ausgabeanwendung so konfigurieren, dass Daten von bestimmten In-Application-Streams an ein externes Ziel geleitet werden. Sie fügen diese Eingaben im Anwendungscode für Java-Anwendungen oder die API für SQL-Anwendungen hinzu.
 
F: Was ist ein In-Application-Daten-Stream?
Ein In-Application-Daten-Stream ist eine Entität, die kontinuierlich Daten in Ihrer Anwendung zur Verarbeitung speichert. Ihre Anwendungen führen kontinuierlich Schreib- und Lesezugriffe auf Ihre In-Application-Daten-Streams durch. Bei Java-Anwendungen interagieren Sie mit In-Application-Daten-Streams, indem Sie Daten mit Stream-Operatoren verarbeiten. Operatoren transformieren einen oder mehrere Daten-Streams in einen neuen Daten-Stream. Für SQL-Anwendungen interagieren Sie mit einem In-Application-Stream, wie Sie es auch mit SQL-Anweisungen für eine SQL-Tabelle tun. Sie wenden SQL-Anweisungen auf einen oder mehrere Daten-Streams an und geben die Ergebnisse in einen neuen Daten-Stream ein.
 
F: Welcher Anwendungscode wird unterstützt?
Kinesis Data Analytics unterstützt Java-Anwendungen, die mit Apache Flink und der AWS SDKs erstellt wurden. Kinesis Data Analytics unterstützt für SQL-Anwendungen ANSI SQL mit einigen Erweiterungen auf den SQL-Standard, um die Arbeit mit Streaming-Daten zu vereinfachen.

Verwalten von Anwendungen

F: Wie überwache ich Betrieb und Leistung meiner Kinesis Data Analytics-Anwendung?
AWS bietet verschiedene Tools, mit denen Sie Ihre Kinesis Data Analytics-Anwendungen überwachen können. Sie können einige dieser Tools für die Überwachung ignorieren. Weitere Informationen, über wie Sie Ihre Anwendung überwachen, finden Sie unter:
 
F: Wie kann ich den Zugriff auf meine Kinesis Data Analytics-Anwendungen verwalten und steuern?
Kinesis Data Analytics benötigt Berechtigungen, um Datensätze aus den Streaming-Datenquellen zu lesen, die Sie in Ihrer Anwendung festlegen. Weiterhin benötigt Kinesis Data Analytics Berechtigungen, um die Ausgabedaten Ihrer Anwendung zu Zielen zu übertragen, die Sie in der Ausgabekonfiguration ihrer Anwendung festlegen. Sie können diese Berechtigungen erteilen, indem Sie IAM-Rollen erstellen, die Kinesis Data Analytics annehmen kann. Die Berechtigungen, die Sie einer solchen Rolle erteilen, bestimmen, was Kinesis Data Analytics tun kann, wenn der Service die Rolle annimmt. Weitere Informationen finden Sie unter:
 
F: Wie skaliert Kinesis Data Analytics meine Anwendung?
Kinesis Data Analytics skaliert Ihre Anwendung elastisch, um sie an den Datendurchsatz Ihres Quell-Streams und die Komplexität Ihrer Abfrage für die meisten Szenarien anzupassen. Kinesis Data Analytics stellt Kapazität in Form von Amazon Kinesis Processing Units (KPU) zur Verfügung. Ein KPU bietet Ihnen 1 vCPU und 4GB Arbeitsspeicher.
 
Für Java-Anwendungen weist Kinesis Data Analytics 50 GB an laufendem Anwendungsspeicher pro KPU zu, die Ihre Anwendung für Checkpoints nutzt, und die für Sie über eine temporäre Disk verfügbar ist. Ein Checkpoint ist ein aktuelles Backup Ihrer laufenden Anwendung, der verwendet wird, um sofort eine Anwendungsstörung zu beheben. Sie können auch die parallele Ausführung Ihrer Anwendungsaufgaben von Kinesis Data Analytics for Java steuern (so wie das Lesen von einer Quelle oder das Ausführen eines Operators) mithilfe der Parameter Parallelism und ParallelismPerkKPU in der API. Parallelism definiert die Anzahl an gleichzeitigen Instances einer Aufgabe. Alle Operatoren, Quellen und Sinks werden mit einem definierten Parallelism ausgeführt, standardmäßig auf 1. Parallelism per KPU definiert die Anzahl von parallelen Aufgaben, die pro Kinesis Processing Unit (KPU) Ihrer Anwendung geplant werden können, standardmäßig auf 1. Weitere Informationen zum Skalieren finden Sie im Kinesis Data Analytics for Java Developer Handbuch.
 
Für SQL-Anwendugne wird jede Streaming-Quelle einem zugehörigen In-Application-Stream zugeordnet. Auch wenn dies bei vielen Kunden nicht erforderlich ist, können Sie KPUs effizienter nutzen, indem Sie die Anzahl der In-Application-Streams erhöhen, denen Ihre Quelle zugeordnet ist. Dazu verwenden Sie den Parameter für die Parallelität. Kinesis Data Analytics weist die Partitionen der Streaming-Datenquellen wie beispielsweise Shards von Amazon Kinesis-Datenströmen gleichmäßig verteilt an die Anzahl der spezifizierten In-Application-Datenströme zu. Wenn Sie zum Beispiel einen Amazon Kinesis-Datenstrom mit 10 Shards als Streaming-Datenquelle haben und eine Eingabeparallelität von zwei festlegen, ordnet Kinesis Data Analytics je fünf Amazon Kinesis-Shards den zwei In-Application-Datenströmen "SOURCE_SQL_STREAM_001" und "SOURCE_SQL_STREAM_002" zu. Weitere Informationen finden Sie unter Anwendungseingaben konfigurieren im Amazon Kinesis Data Analytics for SQL Developer Handbuch.
 
F: Welche bewährten Methoden gibt es zum Erstellen und Verwalten meiner Kinesis Data Analytics-Anwendungen?
Informationen über bewährte Methoden finden Sie im Abschnitt Best Practices for SQL des Amazon Kinesis Data Analytics for SQL Developer Handbuch. Dort werden Verwalten von Anwendungen, Definieren von Eingabeschemata, Verbinden zu Ausgaben und Erstellen von Anwendungscode behandelt.

Preise und Abrechnung

F: Wie viel kostet Kinesis Data Analytics?
Sie zahlen bei Amazon Kinesis Data Analytics nur für die tatsächliche Nutzung. Mit Amazon Kinesis Data Analytics müssen Sie weder Ressourcen bereitstellen noch Vorab-Kosten zahlen.
 
Sie zahlen einen Stundenpreis auf der Basis der Anzahl von Amazon Kinesis Processing Units (oder KPUs), die zum Ausführen Ihrer Streaming-Anwendungen genutzt werden. Eine einzelne KPU ist eine Einheit für die Stream-Verarbeitungskapazität, die aus 1 vCPU für Datenverarbeitung und 4 GB Speicher besteht. Amazon Kinesis Data Analytics skaliert die Anzahl der von Ihrer Streamverarbeitungsanwendung geforderten KPUs automatisch, wenn sich die Speicher- und Verarbeitungsanforderungen als Reaktion auf die Verarbeitungskomplexität und den Streaming-Datendurchsatz ändern.
 
Bei Java-Anwendungen wird Ihnen eine einzelne zusätzliche KPU pro Anwendung, die für die Anwendungsorchestrierung verwendet wird, in Rechnung gestellt. Java-Anwendungen werden auch für die Ausführung von Anwendungsspeicher und für dauerhafte Anwendungsdatensicherungen in Rechnung gestellt. Die Ausführung von Anwendungsspeicher wird für die zustandsbehaftete Verarbeitungskapazitäten von Amazon Kinesis Data Analytics verwendet und pro GB-Monat abgerechnet. Dauerhafte Anwendungs-Datensicherungen sind optional, bieten eine zeitpunktbezogene Wiederherstellung für Anwendungen und werden pro GB-Monat berechnet .
 
Weitere Informationen über die Preise finden Sie in der Preisübersicht zu Amazon Kinesis Data Analytics.
 
F: Ist Kinesis Data Analytics über das kostenlose Nutzungskontingent für AWS verfügbar?
Nein. Kinesis Data Analytics fällt derzeit nicht unter das kostenlose Nutzungskontingent für AWS. Das kostenlose Kontingent für AWS ist ein Programm, das einen kostenlosen Test bestimmter AWS-Services bietet.
 
F: Wird mir eine Kinesis Data Analytics-Anwendung in Rechnung gestellt, die zwar ausgeführt wird, aber keine Daten von der Quelle verarbeitet?
Wenn Ihre Kinesis Data Analytics-Anwendung ausgeführt wird, wird Ihnen für SQL-Anwendungen mindestens eine KPU in Rechnung gestellt. Wenn Ihre Kinesis Data Analytics-Anwendung ausgeführt wird, wird Ihnen für Java-Anwendungen mindestens zwei KPUs und 50 GB laufenden Anwendungsspeicher in Rechnung gestellt.
 
F: Können außer den Kosten für Kinesis Data Analytics noch andere Kosten anfallen?
Kinesis Data Analytics ist eine vollständig verwaltete Lösung für die Stream-Verarbeitung, unabhängig von der Streaming-Quelle, von der Daten gelesen werden, und den Zielen, auf die Daten geschrieben werden. Sie erhalten unabhängige Rechnungen jeweils für die Services von den Sie lesen und auf die Sie in Ihrer Anwendung schreiben.

Erstellen von Java-Anwendungen

Anwendungscode für Java-Anwendungen erstellen

F: Was ist Apache Flink?
Apache Flink ist ein Open-Source-Framework und Engine für Streaming und Batch-Datenverarbeitung. Es ermöglicht einfaches Erstellen von Streaming-Anwendungen, das es leistungsstarke Operatoren bietet und die Kernprobleme des Streaming, wie doppelte Verarbeitung, sehr gut löst. Apache Flink bietet Datendistribution, Kommunikation und Fehlertoleranz für verteilte Berechnungen über Daten-Streams.
 
F: Wie entwickle ich Anwendungen?
Sie können damit beginnen, die Open-Source-Bibliotheken herunterzuladen, einschließlich AWS SDK, Apache Flink und Connectors für AWS-Services. Sie erhalten Anweisungen, wie Sie die Bibliotheken herunterladen und Ihre erste Anwendung erstellen, im Amazon Kinesis Data Analytics for Java Developer Handbuch.
 
F: Wie sieht mein Anwendungscode aus?
Sie schreiben Ihren Java-Code mit Daten-Streams und Stream-Operatoren. Anwendungs-Daten-Streams sind die Datenstruktur, die Sie in Ihrem Java-Code verarbeiten. Daten fließen kontinuierlich von den Quellen in die Anwendungs-Daten-Streams. Ein oder mehrere Stream-Operatoren werden verwendet, um Ihre Verarbeitung des Anwendungs-Daten-Streams zu definieren, einschließlich transform, partition, aggregate, join und window. Daten-Streams und Operatoren können in seriellen und parallelen Ketten zusammengefügt werden. Ein kurzes Beispiel mit Pseudo-Code wird unten angezeigt.
DataStream <GameEvent> rawEvents = env.addSource(
	New KinesisStreamSource(“input_events”));
DataStream <UserPerLevel> gameStream =
	rawEvents.map(event - > new UserPerLevel(event.gameMetadata.gameId, 
			event.gameMetadata.levelId,event.userId));
gameStream.keyBy(event -> event.gameId)
            .keyBy(1)
            .window(TumblingProcessingTimeWindows.of(Time.minutes(1)))
            .apply(...) - > {...};
gameStream.addSink(new KinesisStreamSink("myGameStateStream"));
F: Wie verwende ich die Operatoren?
Operatoren nehmen einen Anwendungs-Daten-Stream als Eingabe und senden verarbeitete Daten zu einem Anwendungs-Daten-Stream als Ausgabe. Operatoren können zusammengefügt werden, um Anwendungen mit mehreren Schritten zu erstellen und kein fortgeschrittenes Wissen von verteilten Systemen voraussetzen, um diese zu implementieren und zu betreiben.
 
F: Welche Operatoren werden unterstützt?
Kinesis Data Analytics for Java beinhaltet über 25 Operatoren von Apache Flink, die eine Reihe von Nutzerfällen lösen können, einschließlich Map, KeyBy, Aggregations, Window Join und Window. Map ermöglicht Ihnen beliebige Verarbeitung durchzuführen, indem ein Element nach dem anderen von ankommenden Daten-Streams zu einem anderen Element verarbeitet werden. KeyBy organisiert Daten logisch, mit einem festgelegten Schlüssel, was Ihnen ermöglicht ähnliche Datenpunkte zusammen zu verarbeiten. Aggregations führt Verarbeitung über mehrere Schlüssel hin weg durch, wie Summe, Min und Max. Window Join verbindet zwei Daten-Streams mit einem gegebenen Schlüssel und Fenster zusammen. Window gruppiert Daten mit einem Schlüssel und üblicherweise einer zeitbasierten Operation, wie das Zählen von einzigartigen Elementen in einer 5-Minuten-Zeitperiode.
 
Sie können benutzerdefinierte Operatoren erstellen, wenn Sie solche benötigen sollten. Sie können weitere Beispiele im Abschnitt Operatoren des Amazon Kinesis Data Analytics for Java Developer Handbuch finden. Sie finden eine vollständige Liste von Apache Flink-Operatoren im Abschnitt Operatoren der Apache Flink-Dokumentation.
 
F: Welche Integrationen werden in einer Kinesis Data Analytics Java-Anwendung unterstützt?
Sie können Integrationen mit minimalem Code aufsetzen. Die auf Apache Flink basierenden Open-Source-Bibliotheken unterstützen das Streaming von Quellen und Zielen. Oder das Streamen von Sinks, für die Lieferung verarbeiteter Daten. Das schließt auch Unterstützung für Datenanreicherung über asynchrone Eingabe-/Ausgabe-Connectors ein. Unten finden Sie eine Liste der AWS-spezifischen Connector, die in den Open-Source-Bibliotheken enthalten sind.
  • Streaming von Datenquellen: Amazon Kinesis Data Streams
  • Ziele oder Sinks: Amazon Kinesis Data Streams, Amazon Kinesis Data Firehose, Amazon DynamoDB und Amazon S3 (durch die Sink-Integrationen).
 
Apache Flink beinhaltet auch andere Connectors, einschließlich Apache Kafka, Apache Cassandra, Elasticsearch und mehr.
 
F: Werden benutzerdefinierte Integrationen unterstützt?
Sie können eine Quelle oder ein Ziel zu Ihrer Anwendung hinzufügen, indem Sie diese auf einem Satz Primitives aufbauen, die es Ihnen ermöglichen, von Dateien Verzeichnissen, Sockets und allem, auf das Sie über das Internet zugreifen können, zu lesen und zu schreiben, Apache Flink bietet diese Primitives für Datenquellen und Daten-Sinks. Die Primitives werden mit Konfigurationen geliefert, wie der Möglichkeit Daten kontinuierlich oder einmal, asynchron oder synchron zu lesen und zu schreiben, und vieles mehr. Zum Beispiel können Sie eine Anwendung aufsetzen, um kontinuierlich von Amazon S3 zu lesen, indem Sie die bestehende, dateibasierte Quellenintegration erweitern.
 
F: Welches Liefermodell stellt Kinesis Data Analytics für Java-Anwendungen zur Verfügung?
Java-Anwendungen in Kinesis Data Analytics verwenden eine Liefermodell „Genau Einmal“, wenn eine Anwendung mit idempotenten Operatoren erstellt wird, einschließlich Quellen und Sinks. Das bedeutet die verarbeiteten Daten werden Downstream-Ergebnisse nur ein einziges Mal beeinflussen. Checkpoints speichern den derzeitigen Anwendungsstatus und ermöglichen Kinesis Data Analytics für Java-Anwendungen die Position der Anwendung wiederherzustellen, um dieselbe Semantik zu bieten wie störungsfreie Ausführung. Checkpoint für Java-Anwendungen werden über die Funktion Checkpoint von Apache Flink bereitgestellt. Standardmäßig verwendet Kinesis Data Analytics für Java-Anwendungen die „Genau Einmal“-Semantik von Apache Flink. Ihre Anwendung wird die „Genau Einmal“-Verarbeitungssemantik unterstützen, wenn Sie Ihre Anwendung mit Quellen, Operatoren und Sinks entwerfen, die die „Genau Einmal“-Semantik von Apache Flink verwenden.
 
Q: Muss ich auf lokalen Speicher von meinem Anwendungsspeicher aus zugreifen?
Ja. Kinesis Data Analytics für Java-Anwendungen stellt Ihrer Anwendung 50 GB laufendem Anwendungsspeicher pro Kinesis Processing Unit (KPU) zur Verfügung. Kinesis Data Analytics skaliert Speicher mit Ihrer Anwendung. Laufender Anwendungsspeicher wird verwendet, um den Anwendungsstatus mit Checkpoints zu speichern. Sie können auch mit Ihrem Anwendungscode darauf zugreifen, um es als temporäre Disk für Daten-Caching oder andere Zwecke zu verwenden. Kinesis Data Analytics kann nicht gespeicherte Daten vom laufenden Anwendungsspeicher entfernen, mithilfe von Checkpoints (z. B. Operatoren, Quellen, Sinks) zu jeder Zeit. Alle im laufenden Anwendugnsspeicher gespeicherten Daten sind im Ruhezustand verschlüsselt.
 
Q: Wie werden automatische Backups mit Kinesis Data Analytics for Java für meine Anwendung erstellt?
Kinesis Data Analytics erstellt automatische Backups deslaufenden Anwendungsstatus mit Checkpoints und Snapshots. Checkpoints speichern den derzeitigen Anwendungsstatus und ermöglichen Kinesis Data Analytics für Java-Anwendungen die Position der Anwendung wiederherzustellen, um dieselbe Semantik zu bieten wie störungsfreie Ausführung. Checkpoints verwenden laufenden Anwendungsspeicher. Snapshots speichern einen Zeitpunkt als Wiederherstellungspunkt für Anwendungen. Snapshots verwenden beständige Anwendungs-Backups.
 
F: Was sind Anwendungs-Snapshots?
Snapshots ermöglichen Ihnen, Anwendungen in der Entwicklung zu frühere Zeitpunkte wiederherzustellen. Das ermöglicht Ihnen den vorhergegangene Anwendungsstatus aufrecht zu erhalten und Ihre Anwendung zu jeden früheren Zustand zurückzuversetzen. Sie können kontrollieren, über wie viele Snapshots Sie zu jedem gegebenen Zeitpunkt verfügen, von null bis tausende Snapshots. Snapshots sind beständige Anwendungs-Backups und Kinesis Data Analytics berechnet Ihnen diese basierend auf Ihrer Größe. Kinesis Data Analytics verschlüsselt standardmäßig in Snapshots gespeicherte Daten. Sie können einzelne Snapshots über die API löschen. Oder alle Snapshots, indem Sie Ihre Anwendung löschen.
 
F: Welche Versionen von Apache Flink werden unterstützt?
Amazon Kinesis Data Analytics für Java-Anwendungen unterstützt Apache Flink 1.6 und Java-Version 8.

Erstellen von SQL-Anwendungen

Eingaben für SQL-Anwendungen konfigurieren

F: Welche Eingaben werden in einer Kinesis Data Analytics SQL-Anwendung unterstützt?
SQL-Anwendungen in Kinesis Data Analytics unterstützen zwei Arten von Eingaben: Streaming-Datenquellen und Referenzdatenquellen. Eine Streaming-Datenquelle generiert kontinuierlich Daten, die zur Verarbeitung in Ihre Anwendung eingelesen werden. Eine Referenzdatenquelle liefert statische Daten, mit denen Ihre Anwendung Daten aus Streaming-Quellen ergänzt. Eine Anwendung kann nur über eine Streaming-Datenquelle und eine Referenzdatenquelle verfügen. Eine Anwendung liest und verarbeitet kontinuierlich neue Daten aus einer Streaming-Datenquelle, beispielsweise Amazon Kinesis Data Streams oder Amazon Kinesis Data Firehose. Eine Anwendung liest eine Referenzdatenquelle, beispielsweise Amazon S3, als Ganzes und verwendet sie zum Ergänzen der Streaming-Datenquelle durch SQL JOINs.
 
F: Was ist eine Referenzdatenquelle?
Eine Referenzdatenquelle liefert statische Daten, mit denen Ihre Anwendung Daten aus Streaming-Quellen ergänzt. Referenzdaten werden als Objekt in Ihrem S3-Bucket gespeichert. Wenn die SQL-Anwendung startet, liest Kinesis Data Analytics das S3-Objekt und erstellt eine In-Application-SQL-Tabelle zum Speichern der Referenzdaten. Ihr Anwendungscode kann die Tabelle dann mit einem In-Application-Stream verknüpfen. Sie können die Daten in der SQL-Tabelle durch Aufrufen der UpdateApplication API aktualisieren.
 
F: Wie erstelle ich eine Streaming-Datenquelle in meiner SQL-Anwendung?
Eine Streaming-Datenquelle kann ein Amazon Kinesis-Datenstrom oder ein Amazon Kinesis Data Firehose-Lieferdatenstrom sein. Ihre Kinesis Data Analytics SQL-Anwendung liest kontinuierlich neue Daten aus Streaming-Datenquellen, wenn diese in Echtzeit ankommen. Die Daten werden für Ihren SQL-Code durch einen In-Application-Stream verfügbar gemacht. Ein In-Application-Stream funktioniert wie eine SQL-Tabelle, da Sie Daten erstellen, einfügen und auswählen können. Der Unterschied liegt jedoch darin, dass ein In-Application-Stream kontinuierlich mit neuen Daten aus der Streaming-Datenquelle aktualisiert wird.
 
Sie können die AWS-Managementkonsole verwenden, um eine Streaming-Datenquelle hinzuzufügen. Weitere Informationen über Datenquellen finden Sie im Abschnitt Anwendungseingaben konfigurieren des Kinesis Data Analytics for SQL Developer Handbuchs.
 
F: Wie erstelle ich eine Referenzdatenquelle in meiner SQL-Anwendung?
Bei einer Referenzdatenquelle kann es sich um ein Amazon S3-Objekt handeln. Ihre Kinesis Data Analytics SQL-Anwendung liest das S3-Objekt als Ganzes, wenn sie gestartet wird. Die Daten werden für Ihren SQL-Code durch eine Tabelle verfügbar gemacht. Der häufigste Anwendungsfall für das Verwenden einer Referenzdatenquelle ist das Ergänzen von Daten aus einer Streaming-Datenquelle mithilfe eines SQL JOIN.
 
Mit der AWS CLI können Sie eine Referenzdatenquelle hinzufügen, indem Sie den S3-Bucket, das Objekt, die IAM-Rolle und das zugehörige Schema angeben. Kinesis Data Analytics lädt diese Daten, wenn Sie die Anwendung starten, und lädt sie jedes Mal erneut, wenn Sie einen API-Aufruf zur Aktualisierung ausführen.
 
F: Welche Datenformate werden für SQL-Anwendungen unterstützt?
SQL-Anwendungen in Kinesis Data Analytics können das Schema ermitteln und interpretieren automatisch mit UTF-8 kodierte JSON- und CSV-Datensätze mithilfe der DiscoverInputSchema API. Dieses Schema wird auf die Daten angewendet, die beim Einfügen in einen In-Application-Stream aus dem Stream gelesen werden.
 
Für andere mit UTF-8 kodierte Daten, die kein Trennzeichen oder ein anderes Trennzeichen als CSV verwenden, sowie in Fällen, in denen die Discovery-API das Schema nicht vollständig ermitteln konnte, können Sie mit dem interaktiven Schema-Editor ein Schema definieren oder die Funktionen zur Zeichenkettenmanipulation nutzen, um Ihre Daten zu strukturieren. Weitere Informationen finden Sie unter Using the Schema Discovery Feature and Related Editing im Amazon Kinesis Data Analytics for SQL Developer Handbuch.
 
F: Wie wird mein Eingabedaten-Stream meinem SQL-Code dargestellt?
Kinesis Data Analytics for SQL wendet Ihr angegebenes Schema an und fügt Ihre Daten aus den Streaming-Quellen in einen oder mehrere In-Application-Streams und die Daten aus Referenz-Quellen in eine einzelne SQL-Tabelle ein. Die vorgegebene Zahl von In-Application-Streams ist diejenige, die die Anforderungen Ihrer meisten Anwendungsfälle erfüllt. Sie sollten diese Zahl erhöhen, wenn Sie feststellen, dass Ihre Anwendung gemäß der CloudWatch-Metrik „MillisBehindLatest“ nicht mit den neuesten Daten in Ihrem Quell-Stream mithalten kann. Die Zahl der erforderlichen In-Application-Streams wird sowohl vom Durchsatz in Ihrem Quell-Stream als auch von der Komplexität Ihrer Abfrage beeinflusst. Der Parameter zum Festlegen der Zahl von In-Application-Streams, die ihrem Quell-Stream zugeordnet werden, wird als Eingabeparallelität bezeichnet.

Anwendungscode für SQL-Anwendungen erstellen

F: Wie sieht mein SQL-Anwendungscode aus?
Der Anwendungscode besteht aus einer Reihe von SQL-Anweisungen, die Eingabedaten verarbeiten und Ausgabedaten erzeugen. Diese SQL-Anweisungen verarbeiten In-Application-Streams und Referenztabellen. Ein In-Application-Stream entspricht einer kontinuierlich aktualisierten Tabelle, auf die Sie die SQL-Operationen SELECT und INSERT anwenden können. Ihre konfigurierten Quellen und Ziele werden Ihrem SQL-Code durch In-Application-Streams mitgeteilt. Sie können außerdem zusätzliche In-Application-Streams erstellen, um Zwischenergebnisse aus Abfragen zu speichern.
 
Sie können das folgende Muster verwenden, um mit In-Application-Streams zu arbeiten:
  • Verwenden Sie eine SELECT-Anweisung immer im Kontext mit einer INSERT-Anweisung. Wenn Sie Zeilen auswählen, fügen Sie Ergebnisse in einen anderen In-Application-Stream ein.
  • Verwenden Sie eine INSERT-Anweisung im Kontext mit einem Pump. Sie verwenden einen Pump, um eine INSERT-Anweisung kontinuierlich zu machen und schreiben in einen In-Application-Stream.
  • Sie verwenden einen Pump, um In-Application-Streams zu verknüpfen, wobei Sie von einem In-Application-Stream auswählen und in einen anderen In-Application-Stream einfügen.
 
Der folgende SQL-Code bietet eine einfache, funktionierende Anwendung:
CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" (
    ticker_symbol VARCHAR(4),
    change DOUBLE,
    price DOUBLE);

CREATE OR REPLACE PUMP "STREAM_PUMP" AS 
  INSERT INTO "DESTINATION_SQL_STREAM"    
    SELECT STREAM ticker_symbol, change, price    
    FROM "SOURCE_SQL_STREAM_001";
Weitere Informationen über Anwendungscode finden Sie unter Application Code im Amazon Kinesis Data Analytics for SQL Developer Handbuch.
 
F: Wie schreibe ich SQL-Code mit Kinesis Data Analytics?
Kinesis Data Analytics bietet eine Bibliothek mit Analysevorlagen für häufige Anwendungsfälle, wozu Streaming-Filter, Tumbling Time Windows und Anomalie-Entdeckung gehören. Sie können aus dem SQL-Editor in der AWS Managementkonsole auf diese Vorlagen zugreifen. Nachdem Sie eine Anwendung erstellt haben und in den SQL-Editor gegangen sind, stehen die Vorlagen in der oberen linken Ecke der Konsole zur Verfügung.
 
F: Wie führe ich in Kinesis Data Analytics eine Anomalie-Erkennung in Echtzeit durch?
Kinesis Data Analytics enthält vorkonfigurierte SQL-Funktionen für verschiedene erweiterte Analysen, darunter auch für die Anomalie-Erkennung. Sie können diese Funktion einfach über Ihren SQL-Code für die Echtzeiterkennung von Anomalien aufrufen. Kinesis Data Analytics verwendet für die Anomalie-Erkennung den Random Cut Forest-Algorithmus. Weitere Informationen zu Random Cut Forests finden Sie im Whitepaper Streaming Data Anomaly Detection.

Ziele in SQL-Anwendungen konfigurieren

F: Welche Ziele werden unterstützt?
Kinesis Data Analytics for SQL unterstützt bis zu vier Ziele pro Anwendung. Sie können SQL-Ergebnisse an Amazon S3, Amazon Redshift und Amazon Elasticsearch Service (über Amazon Kinesis Data Firehose) sowie an Amazon Kinesis Data Streams liefern. Sie können an ein Ziel schreiben, das nicht direkt durch Kinesis Data Analytics unterstützt wird, indem Sie SQL-Ergebnisse an Amazon Kinesis Data Streams senden und dessen Integration mit AWS Lambda nutzen, um Daten an ein Ziel Ihrer Wahl zu senden.
 
F: Wie richte ich ein Ziel ein?
In Ihrem Anwendungscode schreiben Sie SQL-Anweisungen für die Ausgabe in einen oder mehrere In-Application-Streams. Wahlweise können Sie Ihrer Anwendung eine Ausgabekonfiguration hinzufügen, um alle geschriebenen Daten, die in bestimmte In-Application-Streams geschrieben wurden, an bis zu vier externe Ziele zu übertragen. Bei diesen externen Zielen kann es sich um einen Amazon S3-Bucket, eine Amazon Redshift-Tabelle, eine Amazon Elasticsearch-Servicedomäne (durch Amazon Kinesis Data Firehose) oder einen Amazon Kinesis-Datenstrom handeln. Jede Anwendung unterstützt bis zu vier Ziele, wobei die zuvor angegebenen Möglichkeiten kombiniert werden können. Weitere Informationen finden Sie unter Configuring Output Streams im Amazon Kinesis Data Analytics for SQL Developer Handbuch.
 
F: Mein bevorzugtes Ziel wird nicht direkt unterstützt. Wie kann ich SQL-Ergebnisse an dieses Ziel senden?
Sie können AWS Lambda verwenden, um auf einem Ziel zu schreiben, das nicht direkt unterstützt wird. Wir empfehlen, dass Sie die Ergebnisse in einen Amazon Kinesis-Datenstrom schreiben und dann AWS Lambda verwenden, um die verarbeiteten Ergebnisse zu lesen und an das Ziel Ihrer Wahl zusenden. Weitere Informationen finden Sie im Beispiel: AWS Lambda Integration im Amazon Kinesis Data Analytics for SQL Developer Handbuch. Als Alternative können Sie einen Kinesis Data Firehose-Lieferdatenstrom verwenden, um die Daten in Amazon S3 zu laden, und dann eine AWS Lambda-Funktion auszulösen, um diese Daten zu lesen und an das Ziel Ihrer Wahl zu senden. Weitere Informationen finden Sie unter Using AWS Lambda with Amazon S3 im AWS Lambda Developer Guide.
 
F: Welches Liefermodell stellt Kinesis Data Analytics zur Verfügung?
SQL-Anwendungen in Kinesis Data Analytics verwendeen ein Liefermodell nach dem Verfahren "mindestens einmal" für die Ausgabe von Anwendungen an die konfigurierten Ziele. Kinesis Data Analytics-Anwendungen nutzen interne Checkpoints, bei denen es sich um Zeitpunkte handelt, an denen die Ausgabedaten an die Ziele geliefert wurden und es keine Datenverluste gab. Der Service verwendet die Checkpoints nach Bedarf, um sicherzustellen, dass die Ausgabe Ihrer Anwendungen mindestens einmal an die konfigurierten Ziele geliefert wird. Weitere Informationen über das Liefermodell finden Sie unter Configuring Application Output im Amazon Kinesis Data Analytics for SQL Developer Guide.

Vergleich mit anderen Lösungen für die Stream-Verarbeitung

F: Wie unterscheidet sich Amazon Kinesis Data Analytics vom Ausführen meiner eigenen Anwendung mit der Amazon Kinesis-Client-Bibliothek?
Die Amazon Kinesis Client Library (KCL) ist eine vorgefertigte Bibliothek, mit deren Hilfe Sie Konsumentenanwendungen zum Lesen und Verarbeiten von Daten aus einem Amazon Kinesis-Datenstrom aufbauen können. Die KCL übernimmt automatisch komplexe Aufgaben wie die Anpassung an Änderungen beim Datenstromvolumen, den Lastausgleich für Streaming-Daten, die Koordination verteilter Services und fehlertolerante Datenverarbeitung. Die KCL ermöglicht, dass Sie sich beim Entwickeln von Anwendungen ganz auf die Geschäftslogik konzentrieren können.
 
Mit Kinesis Data Analytics können Sie Streaming-Daten in Echtzeit verarbeiten und abfragen. Sie verwenden Standard-SQL, um Ihre Daten-Streams zu verarbeiten, sodass Sie keine neuen Programmiersprachen erlernen müssen. Sie verweisen Kinesis Data Analytics einfach auf den eingehenden Datenstrom, schreiben Ihre SQL-Abfragen und geben an, wohin die Ergebnisse geliefert werden sollen. Kinesis Data Analytics verwendet die KCL, um als Teil ihrer zugrunde liegenden Anwendung Daten von Streaming-Datenquellen zu lesen. Der Service trennt dies von Ihnen ebenso wie von vielen der komplexeren Konzepte in Verbindung mit der Verwendung der KCL wie beispielsweise Checkpoints.
 
Wenn Sie eine vollständig verwaltete Lösung anstreben und SQL für das Verarbeiten der Daten aus Ihrem Datenstrom verwenden möchten, sollten Sie sich für Kinesis Data Analytics entscheiden. Verwenden Sie die KCL, wenn Sie eine benutzerdefinierte Verarbeitungslösung erstellen müssen, deren Anforderungen von Kinesis Data Analytics nicht erfüllt werden, und Sie in der Lage sind, die erstellte Konsumentenanwendung zu verwalten.

Erste Schritte mit Amazon Kinesis Data Analytics

Product-Page_Standard-Icons_01_Product-Features_SqInk
Kosten berechnen

Zur Seite mit den Preisen

Weitere Informationen 
Product-Page_Standard-Icons_01_Product-Features_SqInk
Lesen Sie das Handbuch "Erste Schritte"

Weitere Informationen zur Verwendung von Amazon Kinesis Data Analytics finden Sie in dieser Schritt-für-Schritt-Anleitung.

Product-Page_Standard-Icons_03_Start-Building_SqInk
Entwickeln Sie Streaming-Anwendungen

Erstellen Sie Ihre erste Streaming-Anwendung mit der Amazon Kinesis Data Analytics-Konsole.