Я новичок ie в Spark.
У меня есть непрерывный поток событий в следующем формате: (Идентификатор элемента, Событие, временная метка).
(element=1, event=a, 10:01), (element=2, event=b, 10:02)...
I необходимо определить, происходят ли события определенное c количество раз в заданном временном интервале для определенного элемента.
pattern-1: count(a)=3 and count(b)=2 within 5 min
pattern-2: count(b)=4 and count(c)=3 within 10 min
где a, b, c - события. У меня есть n таких шаблонов.
Я рассмотрел следующие конструкции:
- с использованием алгоритма скользящего окна и redis для хранения промежуточных данных. Это никоим образом не использует архитектуру Spark, но является оптимальным по времени, поскольку будет использовать указатель скользящего окна и не будет повторно вычислять прошлые события.
- с использованием сложного запроса. При этом используется промежуточное хранилище данных Spark, но это, вероятно, не самый оптимальный вариант, поскольку запросы будут выполняться повторно для каждого события.
- с использованием одного задания Spark для каждого шаблона. Я не уверен, насколько это масштабируемо, поскольку я ожидаю значительного количества шаблонов.
- Что-нибудь еще.
Я хочу знать, что может быть хорошим дизайном с учетом архитектуры Spark.