Потоковая обработка данных сложных событий по файлам и довольно длительный период - PullRequest
0 голосов
/ 14 января 2020

моя задача:

  • мы получаем файлы каждый день с около 200 000 записей. Мы сохраняем файлы в течение примерно 1 года, чтобы поддержать повторную обработку, и т. Д. c ..
  • Ради обсуждения предположим, что это какой-то длительный процесс выполнения с идентификатором обеспечения, который коррелирует записи.
  • нам нужно определить гибкие шаблоны в этих файлах и вызвать события
  • Типичные вопросы:
    • , если за записью A следует запись B, за которой следует запись C, и все записи произошли в течение 60 дней, затем вызвать событие
    • , если запись D или запись E была найдена, но запись F НЕ последовала в течение 30 дней, а затем вызвать событие
    • если были найдены как записи D, так и запись E (независимо от порядка), а затем ... в течение 24 часов, то запускается событие
  • для некоторого шаблона требуется поиск в БД / Нет Sql или присоединяется для получения дополнительной информации либо для выбора записи, либо для помещения в событие.
  • «Выбор записи» может быть простым «поле равно А», но также может быть «поле» -А в [] " или «поданное-А совпадение» или «забавный c идентификатор (поле-А, поле-Б)»
  • «дни» также могут быть «часами» или «в предыдущем месяце». Следовательно, более гибкие, чем просто «дни». Обычно у нас есть некоторая дата / время в записи. Максимум в настоящее время «в течение 6 месяцев» (отмена на этапе настройки)
  • Созданные события (предпочтительно JSON) должны содержать данные из всех записей, которые были частью процесса выбора.
  • Нам нужен подход, который позволяет гибко изменять (добавлять, изменять, удалять) шаблон, дополнительно обрабатывая входные файлы.

Есть мысли о том, как элегантно решить проблему? Может быть, какая-то инфраструктура python или java или какое-либо из облачных решений publi c (AWS, GCP, Azure) особенно хорошо решают проблему?

большое спасибо за вашу помощь

1 Ответ

0 голосов
/ 15 января 2020

После некоторых обсуждений и чтений мы сначала попробуем Apache Flink с библиотекой FlinkCEP. Судя по документам и записям в блоге, он, кажется, способен сделать эту работу. Это также кажется выбором AWS, работающим на кластере EMR. Мы не нашли ни одного управляемого сервиса в GCP, ни Azure, обеспечивающего функциональность. Конечно, мы всегда можем развернуть и управлять им сами. К сожалению, мы не нашли Python framework

...