Переопределение времени, используемого для временных окон в Esper

#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 с задержкой всего в одну секунду между ними или с интервалом в целый час, в зависимости от часового массового импорта.