2017-11-24 6 views
0

Mein Anwendungsfall ist eine unbeschränkte Streaming-Pipeline, die Daten in festen stündlichen Fenstern verarbeitet. Ich muss jedoch die Daten aus den vorherigen Fenstern wissen. Gibt es eine Möglichkeit, die Daten in einer ArrayList irgendwo im Speicher zu speichern, oder muss ich sie irgendwo in eine db schreiben?Apache Beam In-Memory-Speicher

Ich versuche, Schiebefenster zu vermeiden, weil nur ein Teil der Verarbeitung diese Daten aus dem vorherigen Fenster benötigt, und ich wollte Überschneidungen so weit wie möglich vermeiden.

Antwort

2

Versuchen Sie Stateful DoFn's zu verwenden. Beachten Sie jedoch, dass der Status selbst pro Schlüssel pro Fenster ist. Siehe https://beam.apache.org/blog/2017/02/13/stateful-processing.html und https://beam.apache.org/blog/2017/08/28/timely-processing.html.

Beachten Sie, dass in Beam-Fenstern in "Event-Zeit" (anstatt "Verarbeitungszeit") - wenn also Daten in der Reihenfolge ankommen können (was in der Praxis fast immer der Fall ist), der Begriff "vorheriges Fenster" Dies ist nicht länger sinnvoll, da Daten für ein früheres Fenster möglicherweise nach Daten für ein späteres Fenster eintreffen. Und Daten für einige Fenster können einfach nie ankommen. Sie müssen wahrscheinlich Ihren Algorithmus neu formulieren, wenn Sie dies berücksichtigen. Es wird hilfreich sein, wenn Sie Ihren Anwendungsfall detaillierter beschreiben.

+0

Hey @jfkk, danke für die Anleitung. Ich bin immer noch sehr neu in Apache Beam, also werde ich wahrscheinlich eine Weile brauchen, um die Konzepte zu verstehen. Aber die neuen Entwicklungen sehen sicherlich aufregend aus und scheinen meinem Anwendungsfall vielversprechend zu verleihen. Ich arbeite an der Verarbeitung einiger Iot-Daten und wenn Daten eintreffen, muss ich identifizieren, ob sie in derselben Charge sein sollen (um mit der gleichen Kennung versehen zu werden). Es gibt jedoch keine bestimmte zeitliche Begrenzung für die Dauer eines Stapels. Um die Daten zu verarbeiten, möchte ich einige Parameter angeben, um zu dokumentieren, wo die Verarbeitung im vorherigen Fenster "ausgelassen" wurde. – jlyh