4

Firehose-> S3 verwendet das aktuelle Datum als Präfix zum Erstellen von Schlüsseln in S3. Dies teilt also die Daten zu dem Zeitpunkt auf, zu dem der Datensatz geschrieben wird. Mein Firehose-Stream enthält Ereignisse, die eine bestimmte Ereigniszeit haben.Partition Kinesis firehose S3 Datensätze nach Ereigniszeit

Gibt es eine Möglichkeit, S3-Schlüssel zu erstellen, die stattdessen diese Ereigniszeit enthalten? Die Downstream-Verarbeitungswerkzeuge hängen davon ab, dass sich jedes Ereignis in einem "Stundenordner" befindet, der sich auf den tatsächlichen Zeitpunkt bezieht. Oder müsste das nach der Firehose ein zusätzlicher Verarbeitungsschritt sein?

Die Ereigniszeit könnte in der Partition Schlüssel oder ich könnte eine Lambda-Funktion verwenden, um es aus dem Datensatz zu analysieren.

Antwort

2

Kinesis Firehose erlaubt Clients (noch) nicht zu steuern, wie das Datumssuffix der endgültigen S3-Objekte generiert wird.

Die einzige Option mit Ihnen ist, eine Nachbearbeitungsschicht nach Kinesis Firehose hinzuzufügen. Beispielsweise könnten Sie einen stündlichen EMR-Job planen, der Data Pipeline verwendet, der alle in der letzten Stunde geschriebenen Dateien liest und sie veröffentlicht, um S3-Ziele zu korrigieren.

0

Es ist keine Antwort auf die Frage, aber ich möchte ein wenig die Idee hinter dem Speichern von Datensätzen in Übereinstimmung mit Ereignis Ankunftszeit erklären.

Zuerst ein paar Worte über Ströme. Kinesis ist nur ein Datenstrom. Und es hat ein Konzept von verbrauchen. Man kann einen Strom zuverlässig nur durch Lesen sequentiell verbrauchen. Und es gibt auch eine Idee von Checkpoints als Mechanismus, um den konsumierenden Prozess anzuhalten und wieder aufzunehmen. Ein Prüfpunkt ist nur eine Sequenznummer, die eine Position im Strom identifiziert. Durch Angabe dieser Nummer kann man den Stream von dem bestimmten Ereignis lesen.

Und jetzt gehen Sie zurück s3 Feuerwehrschlauch Setup ... Da die Kapazität von Kinesis Strom auf dem Standard ist recht begrenzt, wahrscheinlich braucht man irgendwo die Daten von Kinesis zu speichern um es später zu analysieren. Und die Firehose zu s3 Setup tut dies direkt aus der Box. Es speichert nur Rohdaten aus dem Stream in s3-Buckets. Aber logisch sind diese Daten immer noch die gleichen Strom von Aufzeichnungen. Und um diesen Stream zuverlässig konsumieren zu können, benötigt man diese fortlaufenden Nummern für Checkpoints. Und diese Zahlen sind Aufzeichnungen Ankunftszeiten.

Was, wenn ich Datensätze nach Erstellungszeit lesen möchte? Sieht so aus, als ob der s3-Stream sequenziell gelesen, in eine [Zeitreihen] -Datenbank oder ein Data-Warehouse gespeichert und zeitbasierte Lesevorgänge für diesen Speicher ausgeführt werden. Andernfalls wird es immer eine Chance von Null geben, einige Ereignisse während des Lesens der s3 (Strom) zu verpassen. Also würde ich nicht vorschlagen, die s3 Eimer überhaupt neu zu ordnen.

Verwandte Themen