Konfigurieren der Anwendungseingabe - Entwicklerhandbuch für Amazon Kinesis Data Analytics for SQL Applications

Für neue Projekte empfehlen wir, den neuen Managed Service für Apache Flink Studio anstelle von Kinesis Data Analytics for SQL Applications zu verwenden. Der Managed Service für Apache Flink Studio kombiniert Benutzerfreundlichkeit mit fortschrittlichen Analysefunktionen, sodass Sie in wenigen Minuten anspruchsvolle Anwendungen zur Stream-Verarbeitung erstellen können.

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.

Konfigurieren der Anwendungseingabe

Ihre Amazon Kinesis Data Analytics-Anwendung kann Eingaben aus einer einzelnen Streaming-Quelle erhalten und optional eine einzelne Referenzdatenquelle verwenden. Weitere Informationen finden Sie unter Amazon Kinesis Data Analytics für SQL-Anwendungen: So funktioniert's. Die Abschnitte in diesem Thema beschreiben die Quellen von Anwendungseingaben.

Konfigurieren einer Streaming-Quelle

Zu dem Zeitpunkt, an dem Sie eine Anwendung erstellen, geben Sie eine Streaming-Quelle an. Sie können auch eine Eingabe ändern, nachdem Sie die Anwendung erstellt haben. Amazon Kinesis Data Analytics unterstützt die folgenden Streaming-Quellen für Ihre Anwendung:

  • Einen Kinesis-Datenstrom

  • Ein Firehose-Bereitstellungs-Stream

Anmerkung

Nach dem 12. September 2023 können Sie keine neuen Anwendungen mit Kinesis Data Firehose als Quelle erstellen, wenn Sie Kinesis Data Analytics für SQL nicht bereits verwenden. Bestandskunden, die Kinesis Data Analytics für SQL-Anwendungen mit KinesisFirehoseInput verwenden, können weiterhin Kinesis Data Analytics einsetzen, um Anwendungen mit KinesisFirehoseInput innerhalb eines bestehenden Kontos hinzuzufügen. Wenn Sie bereits Kunde sind und mit Kinesis Data Analytics für SQL-Anwendungen ein neues Konto mit KinesisFirehoseInput erstellen möchten, können Sie über das Formular zur Erhöhung des Service-Limits einen Fall erstellen. Weitere Informationen erhalten Sie im AWS Support -Sicherheitszentrum. Wir empfehlen, neue Anwendungen immer zu testen, bevor Sie sie in die Produktionsumgebung überführen.

Anmerkung

Wenn der Kinesis-Datenstrom verschlüsselt ist, greift Kinesis Data Analytics nahtlos auf die Daten im verschlüsselten Stream zu. Weitere Konfigurationsschritte sind nicht erforderlich. Kinesis Data Analytics speichert keine unverschlüsselten Daten, die aus Kinesis-Datenströmen gelesen wurden. Weitere Informationen finden Sie unter Was bedeutet eine serverseitige Verschlüsselung in Kinesis-Daten-Streams?

Kinesis Data Analytics fragt die Streaming-Quelle kontinuierlich nach neuen Daten ab und übernimmt diese in In-Application-Streams, je nach Eingabekonfiguration.

Anmerkung

Das Hinzufügen eines Kinesis-Streams als Eingabe Ihrer Anwendung wirkt sich nicht auf die Daten im Stream aus. Wenn eine andere Ressource wie ein Firehose-Bereitstellungsdatenstrom auch auf denselben Kinesis-Stream zugreift, erhalten sowohl der Firehose-Bereitstellungsdatenstrom als auch die Kinesis Data Analytics-Anwendung dieselben Daten. Der Durchsatz und die Drosselung könnten jedoch beeinträchtigt sein.

Ihr Anwendungscode kann den In-Application-Stream abfragen. Im Rahmen der Eingabekonfiguration stellen Sie Folgendes bereit:

  • Streaming-Quelle – Sie stellen den Amazon-Ressourcennamen (ARN) des Streams und eine IAM-Rolle bereit, die Kinesis Data Analytics annehmen kann, um in Ihrem Namen auf den Stream zuzugreifen.

  • Namenspräfix des In-Application-Streams – Wenn Sie die Anwendung starten, erstellt Kinesis Data Analytics den angegebenen In-Application-Stream. In Ihrem Anwendungscode greifen Sie mittels dieses Namens auf den In-Application-Stream zu.

    Sie können eine Streaming-Quelle optional mehreren In-Application-Streams zuordnen. Weitere Informationen finden Sie unter Einschränkungen. In diesem Fall erstellt Amazon Kinesis Data Analytics die angegebene Zahl von In-Application-Streams mit Namen wie folgt: Präfix_001, Präfix_002 und Präfix_003. Standardmäßig ordnet Kinesis Data Analytics die Streaming-Quelle einem einzelnen In-Application-Stream namens Präfix_001 zu.

    Es gibt eine Einschränkung in Bezug auf die Rate, mit der Sie Zeilen in einen In-Application-Stream einfügen können. Daher unterstützt Kinesis Data Analytics mehrere solcher In-Application-Streams, damit Sie wesentlich schneller Datensätze in Ihre Anwendung importieren können. Wenn Ihre Anwendung mit den Daten in der Streaming-Quelle nicht Schritt halten kann, können Sie Parallelitätseinheiten hinzufügen, um die Leistung zu verbessern.

  • Zuweisungsschema – Sie beschreiben das Datensatzformat (JSON, CSV) für die Streaming-Quelle. Außerdem beschreiben Sie, wie jeder Datensatz im Stream den Spalten im erstellten In-Application-Stream zugeordnet wird. An dieser Stelle stellen Sie Spaltennamen und Datentypen bereit.

Anmerkung

Kinesis Data Analytics fügt den Bezeichnern (Stream-Name und Spaltennamen) bei der Erstellung des Eingabe-In-Application-Streams Anführungszeichen hinzu. Bei der Abfrage dieses Streams und der Spalten müssen Sie diese Bezeichner in Anführungszeichen mit übereinstimmender Groß- und Kleinschreibung (exakt übereinstimmende Groß- und Kleinbuchstaben) angeben. Weitere Informationen zu Identifikatoren finden Sie unter Identifikatoren in der Amazon Managed Service für Apache Flink-SQL-Referenz.

Sie können in der Amazon Kinesis Data Analytics-Konsole eine Anwendung erstellen und Eingaben konfigurieren. Die Konsole führt anschließend die erforderlichen API-Aufrufe aus. Sie können Anwendungseingaben konfigurieren, wenn Sie eine neue Anwendungs-API erstellen oder einer vorhandenen Anwendung eine Eingabekonfiguration hinzufügen. Weitere Informationen finden Sie unter CreateApplication und AddApplicationInput. Im Folgenden sehen Sie den Eingabekonfigurationsteil des Createapplication-API-Anforderungstexts:

"Inputs": [ { "InputSchema": { "RecordColumns": [ { "Mapping": "string", "Name": "string", "SqlType": "string" } ], "RecordEncoding": "string", "RecordFormat": { "MappingParameters": { "CSVMappingParameters": { "RecordColumnDelimiter": "string", "RecordRowDelimiter": "string" }, "JSONMappingParameters": { "RecordRowPath": "string" } }, "RecordFormatType": "string" } }, "KinesisFirehoseInput": { "ResourceARN": "string", "RoleARN": "string" }, "KinesisStreamsInput": { "ResourceARN": "string", "RoleARN": "string" }, "Name": "string" } ]

Konfigurieren einer Referenzquelle

Sie können darüber hinaus optional eine Referenzdatenquelle zu einer vorhandenen Anwendung hinzufügen, um die Daten aus Streaming-Quellen zu ergänzen. Sie müssen Referenzdaten als Objekt in Ihrem Amazon S3 Bucket speichern. Wenn die Anwendung gestartet wird, liest Amazon Kinesis Data Analytics das Amazon S3-Objekt und erstellt eine In-Application-Referenztabelle. Ihr Anwendungscode kann die Tabelle dann mit einem In-Application-Stream verknüpfen.

Sie speichern Referenzdaten im Amazon S3-Objekt unter Verwendung der unterstützten Formate (CSV, JSON). Angenommen, Ihre Anwendung führt Analysen von Börsenbestellungen aus. Nehmen Sie das folgende Datensatzformat für die Streaming-Quelle an:

Ticker, SalePrice, OrderId AMZN $700 1003 XYZ $250 1004 ...

In diesem Fall könnten Sie eine Referenzdatenquelle in Betracht ziehen, um Details zu den einzelnen Börsentickern bereitzustellen, wie den Firmennamen.

Ticker, Company AMZN, Amazon XYZ, SomeCompany ...

Sie können eine Referenzdatenquelle der Anwendung entweder mit der API oder mit der Konsole hinzufügen. Amazon Kinesis Data Analytics stellt die folgenden API-Aktionen zur Verwaltung von Referenz-Datenquellen bereit:

Informationen zum Hinzufügen von Referenzdaten mithilfe der Konsole finden Sie unter Beispiel: Hinzufügen von Referenzdaten zu einer Kinesis Data Analytics-Anwendung.

Beachten Sie Folgendes:

  • Wenn die Anwendung ausgeführt wird, erstellt Kinesis Data Analytics eine In-Application-Referenztabelle und lädt anschließend sofort die Referenzdaten.

  • Wenn die Anwendung nicht ausgeführt wird (wenn sie z. B. im Bereitschaftsstatus ist), speichert Kinesis Data Analytics nur die aktualisierte Eingabekonfiguration. Wenn die Ausführung der Anwendung gestartet wird, lädt Kinesis Data Analytics die Referenzdaten als Tabelle in Ihrer Anwendung.

Gehen wir davon aus, dass Sie die Daten aktualisieren möchten, nachdem Kinesis Data Analytics die In-Application-Referenztabelle erstellt hat. Vielleicht haben Sie das Amazon S3-Objekt aktualisiert oder Sie möchten ein anderes Amazon S3-Objekt verwenden. In diesem Fall können Sie entweder UpdateApplication explizit aufrufen oder in der Konsole Aktionen, Referenzdatentabelle synchronisieren wählen. Kinesis Data Analytics aktualisiert die In-Application-Referenztabelle nicht automatisch.

Es gibt eine Einschränkung in Bezug auf die Größe des Amazon S3-Objekts, das Sie als Referenzdatenquelle erstellen können. Weitere Informationen finden Sie unter Einschränkungen. Wenn die Größe des Objekts den Grenzwert überschreitet, kann Kinesis Data Analytics die Daten nicht laden. Der Anwendungsstatus wird als „ausgeführt“ angezeigt, die Daten werden jedoch nicht gelesen.

Wenn Sie eine Referenzdatenquelle hinzufügen, müssen Sie folgende Informationen bereitstellen:

  • Name von S3-Bucket und Objektschlüssel – Zusätzlich zum Bucket-Namen und Objektschlüssel stellen Sie auch eine IAM-Rolle bereit, die Kinesis Data Analytics annehmen kann, um das Objekt in Ihrem Namen zu lesen.

  • Name der In-Application-Referenztabelle – Kinesis Data Analytics erstellt diese In-Application-Tabelle und füllt sie durch Lesen des Amazon S3-Objekts aus. Dies ist der Tabellenname, den Sie in Ihrem Anwendungscode angeben.

  • Zuweisungsschema – Sie beschreiben das Datensatzformat (JSON, CSV) und die Kodierung der im Amazon S3-Objekt gespeicherten Daten. Sie beschreiben außerdem die Zuordnung der einzelnen Datenelemente zu den Spalten in der In-Application-Referenztabelle.

Im Folgenden wird der Anforderungstext in der AddApplicationReferenceDataSource-API-Anforderung gezeigt.

{ "applicationName": "string", "CurrentapplicationVersionId": number, "ReferenceDataSource": { "ReferenceSchema": { "RecordColumns": [ { "IsDropped": boolean, "Mapping": "string", "Name": "string", "SqlType": "string" } ], "RecordEncoding": "string", "RecordFormat": { "MappingParameters": { "CSVMappingParameters": { "RecordColumnDelimiter": "string", "RecordRowDelimiter": "string" }, "JSONMappingParameters": { "RecordRowPath": "string" } }, "RecordFormatType": "string" } }, "S3ReferenceDataSource": { "BucketARN": "string", "FileKey": "string", "ReferenceRoleARN": "string" }, "TableName": "string" } }