Spark Streaming-Datenaustausch zwischen Stapeln

Spark Streaming verarbeitet die Daten in Mikro-Batches.

Jede Intervalldaten werden mithilfe von RDDs parallel verarbeitet, ohne dass Daten zwischen den einzelnen Intervallen ausgetauscht werden.

Aber mein Anwendungsfall muss die Daten zwischen Intervallen teilen.

Bedenke dieNetwork WordCount Beispiel, das die Anzahl aller in diesem Intervall empfangenen Wörter ergibt.

Wie würde ich die folgende Wortzahl erzeugen?

Relative Zählung für die Wörter "hadoop" und "spark" mit der vorherigen Intervallzählung

Normale Wortanzahl für alle anderen Wörter.

Hinweis: UpdateStateByKey führt die Stateful-Verarbeitung durch, dies gilt jedoch für jeden Datensatz und nicht für bestimmte Datensätze.

So, UpdateStateByKey erfüllt diese Anforderung nicht.

Aktualisieren

Betrachten Sie das folgende Beispiel

Intervall-1

Eingang

Sample Input with Hadoop and Spark on Hadoop

Ausgabe

hadoop  2
sample  1
input   1
with    1
and 1
spark   1
on  1

Intervall-2

Eingang

Another Sample Input with Hadoop and Spark on Hadoop and another hadoop another spark spark

Ausgabe

another 3
hadoop  1
spark   2
and 2
sample  1
input   1
with    1
on  1

Erläuterung

1. Intervall gibt die normale Wortanzahl aller Wörter an.

Im 2. Intervall kam es zu einer dreimaligen Überschreitung, die Ausgabe sollte jedoch 1 (3-2) sein

Spark ist dreimal aufgetreten, aber die Ausgabe sollte 2 (3-1) sein

Für alle anderen Wörter sollte die normale Wortzahl angegeben werden.

Während der Verarbeitung der Daten für das 2. Intervall sollte die Wortanzahl des 1. Intervalls @ sei hadoop undFunk

Dies ist ein einfaches Beispiel mit Illustration.

Im konkreten Anwendungsfall sind Felder, die eine gemeinsame Datennutzung erfordern, Teil des RDD-Elements (RDD), und es müssen sehr viele Werte verfolgt werden.

d. h. in diesem Beispiel wie Hadoop- und Spark-Keywords müssen fast 100.000 Keywords erfasst werden.

Ähnliche Fälle in Apache Storm:

erteiltes Caching im Stu

Storm TransactionalWords

Antworten auf die Frage(2)

Ihre Antwort auf die Frage