Ich bin ziemlich neu auf Spark Streaming und ich bin stecken stecken versucht, um herauszufinden, wie dieses Problem zu behandeln, da ich viele Beispiele für einzelne (K, V) Paare, aber alles weitere. Ich würde mich über Hilfe freuen, um mit Sparks Transformationen mit Java den besten Ansatz zu finden.Spark-Streaming reduzieren durch mehrere Schlüssel Java
ich kurz das Szenario beschreiben lassen,
Das Ziel ist es, die Fehlerquote eines Satzes von Elementen innerhalb eines Zeitfensters zu erhalten.
die folgende Eingabe gegeben,
(A, Error)
(B, Success)
(B, Error)
(B, Success)
(C, Success)
(C, Error)
Es wird von Element aggregieren wird und (Element, (Number of Success, Number of Error))
der Status dann. Auf diesem Fall würde das Ergebnis der Transformation sein,
(A, (0,1))
(B, (2,1))
(C, (1,1))
Und schließlich eine Verhältnisberechnung eine Funktion wie (i1, i2) mit -> i1/(i1 + i2).
(A, 100%)
(B, 33.3%)
(C, 50%)
Soweit ich verstehe, wäre das Ergebnis von reduceByKeyAndWindow() Funktion zum Beispiel gegeben werden
JavaPairDStream<String, Double> res =
pairs.reduceByKeyAndWindow(reduceFunc, Durations.seconds(30), Durations.seconds(1));
Nach dem Rückfluss der Anwendung, meine Fragen sind,
Wie definiert man ein Paar auf einem JavaPairDStream mit mehr als einem Wert oder Schlüssel (vielleicht so etwas wie JavaPairDStream<String, Tuple2<Integer,Integer>>
)?
Welches ist der beste Ansatz für die reduceFunc
gegeben ein Paar mit mehreren Schlüsseln?
Welches ist der beste Weg, um den ursprünglichen DStream (vielleicht so etwas wie JavaDStream<Tuple2<String, String>> line = input.map(func)
) abzubilden?
Vielen Dank im Voraus für Ihre Hilfe.