2013-07-13 6 views
2

Есть ли способ обнаружить и сообщить дубликаты в потоке?CEP как обнаружить и сообщить дубликаты в потоке?

пример: Поток данных входа пользователя, содержащих кортежи с именем пользователя и IP-адресом. Целью является определение входа пользователя одним и тем же пользователем из разных IP-адресов за последние 10 секунд.

Я взглянул на языки запросов сиддхи (wso2) и esper, но я не могу понять, как это достичь.

+0

привет, спасибо за обоих ответов, к сожалению, сайт позволяет мне отметить только один из них, как принято, поэтому я выбрал первый один. оба продукта великолепны. – ron

ответ

4

В WSO2 СЕР (Сиддхи), вы можете достичь этого, используя

пример запроса 'Узоры':

from every a1 = authStream 
      -> b1 = authStream[username == a1.username and ipAddress != a1.ipAddress] 
      within 10000 insert into alertStream a1.username as detectedUserName 

В приведенном выше запросе, a1 и b1 см 2 события из authStream и мы «Идет поиск шаблона, где их имена пользователей равны, а IP-адреса разные. Используя ключевое слово «внутри», мы можем ограничить период времени, в течение которого этот шаблон должен происходить внутри (заданный в миллисекундах). Затем мы вставляем совпадения, найденные в alertStream.

Дополнительную информацию о шаблонах см. На странице WSO2 CEP documentation on patterns. This page on advanced queries также может помочь.

2

Esper, например, с помощью спички распознайте SQL шаблон, предложенный стандарт:

select * from AuthStream.win:time(10 sec) 
match_recognize (
    partition by username 
    measures A.username as a_name 
    pattern (A B) 
    define 
    B as B.ipaddress != A.ipaddress 
) 

 Смежные вопросы

  • Нет связанных вопросов^_^