Получить все события с указанным c ключ от Кафки - PullRequest
0 голосов
/ 15 марта 2020

В моей системе есть темы, в которых хранятся события для заданных объектов. Теперь я хотел бы провести некоторый анализ журнала событий. Поэтому мне нужно запросить все события, принадлежащие некоторой сущности в течение определенного периода времени. Есть ли возможность агрегировать все события определенного ключа в TimeWindow, используя Kafka Streams?

Ответы [ 2 ]

0 голосов
/ 22 марта 2020

Это действительно зависит от того, как вы хотите настроить свою систему, какой анализ вы хотите сделать и что именно вы подразумеваете под «запросом»

Для одноразового анализа вы можете просто захотеть сделать stream.transform(...).to() и фильтр по ключу и отметке времени (context.timestamp() - ваш друг) в вашем Transformer и запишите результат в топи c. Следовательно, вы должны запустить эту программу один раз для некоторого ключевого и временного диапазона. Возможно, вы могли бы даже выполнить необходимый анализ перед тем, как написать какой-либо результат, вы используете WindowStore (с включенным дублированием) для буферизации всех данных в хранилище).

Если вы хотите написать программу, которая подготавливает ** все * данные для анализа, вы должны использовать groupBy() (или grouByKey()). Использование windowedBy() с TimeWindows работает только из тех случаев, когда вы знаете временные диапазоны, которые вы хотите сгруппировать данные заранее (например, ежечасно, ежедневно или аналогично). Для самой агрегации вы можете вернуть объект List<Value> и накопить соответствующие записи для каждого ключа и окна. Таким образом, вы можете использовать IQ для получения всех записей для указанного ключа и окна за один поиск.

0 голосов
/ 15 марта 2020

Звучит так, как будто вы просто хотите groupByKey метод DSL

...