Маркировка окна Flink Tumbling

#apache-flink #data-stream

#apache-flink #поток данных

Вопрос:

У меня есть сценарий с приложением flink, которое получает потоки данных в следующем формате:

{ «event_id»: «c1s2s34», «event_create_timestamp»: «2019-03-07 11:11:23″, » количество»: «104.67» }

Я использую следующее окно прерывания, чтобы найти сумму, количество и средние значения для входных потоков за последние 60 секунд.

Значение ключа.timeWindow (время.секунды (60))

Однако, как я могу обозначить агрегированный результат таким образом, чтобы я мог сказать, что в выходном потоке данных между 16: 20 и 16: 21 агрегированными результатами являются сумма x, количество y и среднее значение z.

Любая помощь уместна.

Комментарии:

1. Как вы хотите использовать результаты — собираетесь ли вы их распечатать, или записать в файл, или отправить в Kafka, …?

2. Привет, Дэвид, я хочу отправить результат в Kinesis Firehose.

Ответ №1:

Если вы посмотрите на пример работы с окнами на учебном сайте Flink — https://training.ververica.com/exercises/hourlyTips.html — вы увидите пример того, как использовать processwindowфункцию для создания выходных событий из Windows, которые включают информацию о времени и т.д. Основная идея заключается в том, что методу process() в ProcessWindowFunction передается контекст, который, в свою очередь, содержит объект Window, из которого вы можете определить время начала и окончания для окна, например, context.window().getEnd() .

Затем вы можете настроить, чтобы ваша функция Processwindow возвращала кортежи или POJO, содержащие всю информацию, которую вы хотите включить в свои отчеты.