Kann ich automatisch Zeilenumbrüche an AWS Firehose-Datensätze anhängen?

8

Ich versuche, eine Kinesis Analytics-Anwendung mit den folgenden Einstellungen zu konfigurieren:

  • Der Eingabestream ist ein Kinesis-Firehose, der stringulierte JSON-Werte verwendet
  • Das SQL ist ein einfaches Passthrough (es muss später komplizierter sein, aber zum Testen sendet es nur die Daten durch)
  • Ausgabestrom ist ein zweiter Kinesis-Firehose, der Datensätze an einen S3-Bucket
  • liefert

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.

    
MrHen 29.05.2017, 16:01
quelle

2 Antworten

2

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

    
Srivignesh KN 02.08.2017 00:00
quelle
0

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%     
Sinto 06.03.2018 03:29
quelle