Apache Flink - динамически и однозначно назначает UID для перемещения целевых событий (приложение отслеживания) - PullRequest
0 голосов
/ 17 марта 2019

Мне нужно разработать PoC приложения, которое динамически идентифицирует и отслеживает положение движущихся целей.

Приложение получает в качестве входных данных поток:

  • различных событий E
    • событие новой позиции: текущая позиция [широта, долгота]
    • параметр TransmissionCode изменен: код изменен на «Код»-1234 "
    • ...
  • , генерируемых движущимися целями, например
    • такси
    • автобус
    • ...

ПРИМЕЧАНИЕ: коды передачи могут меняться со временем (раз в неделю)

Исходные события ненести информацию о том, какая цель сгенерирована, какое событие , поэтому мне нужно (попытаться) однозначно идентифицировать цели на основе подмножества атрибутов события, что-то вроде:

targetID = function (transmissionCode, timestamp,position [, ...])

При непрерывной обработке потока приложение должно автоматическисоздать и обновить список идентифицированных целей, указав последнюю известную позицию и информацию о цели (например, последний известный код передачи).

Для этого я читал документацию Apache Flink, но немногозапутался в том, как правильно реализовать этот сценарий использования.

Я новичок Флинк, и после всего прочтения я думаю, что мне следует сделать:

  1. обработать без ключа входной поток по времени события (параллелизм = 1?)
  2. попытаться определить цель, посмотрев на некоторые атрибуты события (функция карты, которая обогащает событие с помощью targetID?)
  3. сгенерировать новый targetID со связанной информацией о событии или обновить существующий в списке (сопоставить с состоянием?)

Сомнения:

  1. ИДЕНТИФИКАЦИЯ ЦЕЛИ- правильно ли (в контексте Флинка) думать о фазе идентификации цели как о функции карты, которая генерирует в качестве вывода другой поток с добавлением targetID на каждом событии?
  2. CURRENT STATE - если 1. верно, какой механизм Флинка является лучшим для сохранения текущего состояния списка целей с последней информацией?Нужно ли использовать пользовательский POJO в качестве состояния оператора и хранить там весь список?(цели могут быть не более 200 000)
  3. ПАРАЛЛЕЛИЗАЦИЯ - можно ли каким-либо образом распараллелить этап идентификации цели или он должен быть последовательным?

В конце мне нужно обработатьпоток и генерирует список движущихся целей с самой последней известной информацией.

Я надеюсь, что кто-то с большим опытом в области Flink мог бы дать мне несколько советов и привести меня на правильный путь.

Заранее спасибо

...