2016-06-23 2 views
0

Я начал использовать Apache Flink для анализа веб-трафика./windowApache Операторы цепочки Flink

Я не нашел способ суммировать более 1 метрику, используя окно времени. в follwing примере код агрегирует использование слова, , но что, если мне нужно агрегировать слова, книги, сайты назвать и т.д .. (более 1 метрика на потоке)

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

ответ

2

Если я понимаю правильно, вы хотите группировать различные атрибуты вашего потока. В этом случае, вы можете просто скопировать поток:

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

Вызов Множественные на поток (т.е. wordsStream) можно выполнить несколько вычислений на одних и тех же данных.

+0

спасибо! это лучшая практика при работе с Flink? его как носик с двумя болтами по сравнению со Штормом? –

+0

Да, exaccty. И дело не в лучшей практике - это единственный способ сделать это. :) –

+0

Привет @ MatthiasJ.Sax, я заметил, что при наличии Tupple3 (key1, key2, count), а затем агрегирует их по key0 и key1 (keyBy (x) .sum (3) .print()), так как вы упомянули (как я понял из вашего ответа), выход по-прежнему показал комбинации, такие как: key0, key1, count. Значение: im пытается иметь эквивалентный код для этого sql: select key0, count (*), а не: select key0, key1, count (*) ..... Имеет ли смысл? –

Смежные вопросы