#complex-event-processing #esper
#сложная обработка событий #esper
Вопрос:
Я работаю над проектом CEP, в котором я анализирую журналы из файла оптом. Файл представляет собой сжатый csv-файл, который массово передается на мой компьютер analytics каждый час, где каждая строка содержит событие с меткой времени, точно указывающей, когда оно произошло в течение предыдущего часа.
Чтение этого файла в простой объект Java не является проблемой, и я обычно получаю что-то вроде этого:
class MyEvent {
public Date getTimestamp();
public String getMessage(); //shortened to these field only for simplicity
public String getSource();
public int getCount();
}
Итак, проблема в том, что этот файл может содержать события, которые были записаны где-то между 1 часом и 1 секундой назад, и единственный способ узнать это — проверить поле метки времени в самом событии. При загрузке этих событий в Esper все они будут загружены в течение нескольких секунд (вероятно, их будет десятки тысяч, и они будут загружены так быстро, как только Esper сможет их принять).
Теперь сам анализ хочет вычислять среднее «количество» на «источник» каждые 5 минут в Esper (ничего слишком сложного), однако, поскольку все события загружаются в течение нескольких секунд, временное окно в Esper будет неправильным, и все события могут находиться в одном временном окне независимо от того, когдаони были созданы. Итак, мой вопрос: есть ли возможность переопределить то, что считается меткой времени события в временных окнах Esper?
Проблема также возрастает, когда временное окно разделяется между двумя файлами, которые загружаются с часовой задержкой.
Спасибо.
Ответ №1:
Это сделает это: выберите источник, суммируйте (посчитайте) из группы MyEvent по исходному выводу каждые 5 секунд
Esper также позволяет внешнему таймеру свободно управлять временем в коде приложения.
Комментарии:
1. Приведенный вами пример был тем же, который я рассматривал, пока не понял смещение события. Не могли бы вы подробнее остановиться на комментарии внешнего таймера?
2. «пока вы не поняли смещение события» — что бы это значило?
3. esper.codehaus.org/esper-5.0.0/doc/reference/en-US/html_single/…
4. если вопрос заключается в истекающих событиях, основанных на времени, возможно, выгрузите события в именованное окно, используя on-delete для удаления с предложением where, учитывающим время.
5. Извините, под смещением я имел в виду задержку между сгенерированным событием и временем его подачи в Esper (например, оптом). Это означает, что события, которые генерируются с 10-минутной задержкой, могут подаваться в Esper с задержкой всего в одну секунду между ними или с интервалом в целый час, в зависимости от часового массового импорта.