2016-06-23 5 views
0

Ich begann mit Apache Flink für Web-Traffic-Analyse./windowApache Flink-Kettenoperatoren

Ich habe keine Möglichkeit gefunden, mehr als 1 Metrik über das Zeitfenster zusammenzufassen. im follwing Beispiel aggregiert die Code Verwendung eines Wort, aber was ist, wenn ich zu aggregieren Worten brauche, Bücher, Websites nennen etc .. (mehr als 1 metrische auf dem Strom)

val keyValuePair = wordsStream.keyBy(0).timeWindow(Time.seconds(15)) 

Antwort

2

Wenn ich verstehe, richtig, Sie möchten verschiedene Attribute Ihres Streams gruppieren. Für diesen Fall können Sie einfach den Strom replizieren:

val keyValuePair = wordsStream.keyBy(0).timeWindow(Time.seconds(15)) 
val keyValuePair2 = wordsStream.keyBy(1).timeWindow(Time.seconds(15)) 
// and so forth 

mehrere Betrieb Aufruf auf einem Strom (dh wordsStream) können Sie mehrere Berechnungen auf denselben Daten auszuführen.

+0

danke! ist das eine Best Practice bei der Arbeit mit Flink? es ist wie eine Tülle mit zwei Schrauben im Vergleich zu Storm? –

+0

Ja, genau. Und es ist keine Frage der Best Practice - es ist der einzige Weg, es zu tun. :) –

+0

Hallo @ MatthiasJ.Sax, ich habe festgestellt, dass, wenn ein Tupple3 (key1, key2, count), und dann aggregieren sie nach key0 und key1 (keyBy (x) .sum (3) .print()), als Sie erwähnt (wie ich aus Ihrer Antwort verstanden habe), zeigte die Ausgabe noch Kombinationen wie: key0, key1, count. Bedeutung: Ich versuche, gleichwertigen Code zu diesem sql zu haben: select key0, count (*), und nicht: select key0, key1, count (*) ..... Macht es Sinn? –