Ich versuche, eine Kinesis Analytics-Anwendung mit den folgenden Einstellungen zu konfigurieren:
Später werde ich den Inhalt des S3-Buckets mit Hive + JSONSERDE importieren, der erwartet, dass jeder JSON-Datensatz in einer eigenen Zeile lebt. Die Firehose-Ausgabe hängt nur alle JSON-Datensätze an, die JSONSERDE auflösen.
Ich konnte einen AWS-Lambda-Datenformatierer an den Ausgabestream anhängen, aber das erscheint teuer. Alles was ich will, ist jeden Datensatz mit einem Zeilenumbruch zu teilen.
Wenn ich ohne eine Analytics-App auskommen würde, würde ich die neue Zeile an jeden Firehose-Datensatz anhängen. Es scheint seltsam, dass es im SQL der App keine Möglichkeit gibt, dies zu tun:
%Vor%Ist die beste Antwort, um den Lambda-Datenformatierer hinzuzufügen? Ich möchte das wirklich vermeiden.
Ich hatte eine ähnliche Anforderung, um neue Zeilen zu den generierten Dateien hinzuzufügen. In unserer Anwendung wird firehose über API Gateway aufgerufen.
Dies wird in den Body-Mapping-Templates unter Integrationsanforderung angegeben.
Der folgende Befehl im API-Gateway generiert neue Zeilen für die Kinesis-Firehose-Datensätze.
Methode 1:
%Vor%Methode 2:
%Vor%Wenn Sie eine andere Trennzeichenänderung (\ n) zu einem Trennzeichen Ihrer Wahl benötigen.
Keine einfache Antwort auf Ihre Frage, aber das funktioniert perfekt, wenn Sie Firehose über API Gateway aufrufen.
Danke & amp; Grüße, Srivignesh KN
Ein einfaches Beispiel, wie wir es implementiert haben. Wir haben Javascript verwendet, um Datensätze in Kinesis Stream zu speichern, und Firehose verwendet, um mit gzip-Komprimierung in den s3-Speicherort umzuleiten. Später wird athena vom s3-Standort abfragen, um Datensätze von s3 zu holen.
Below Code zum Hinzufügen einer neuen Zeile vor dem Senden an Kinesis Stream mit JavaScript-Code.
%Vor%Tags und Links amazon-kinesis aws-kinesis-firehose