2013-06-18 1 views
1

나는 redis Server에서 문장을 읽고 각 단어의 출현 횟수를 계산하고 있습니다. 이제 계산에 따라 상위 10 개 단어를 계산하려고합니다. Redout Server의 문장을 읽으려면 한개의 Spout이 있습니다. 문장 하나 하나를 단어와 단어로 계산하는 하나의 Bolt로 구분합니다.폭풍의 상위 10 개 결과 계산

개수에 따라 상위 10 개 단어를 찾는 내 접근 방식은 무엇입니까?

+0

스톰이 연속 스트림에서 작동하도록 설계되었으므로 상위 10 개를 결정해야합니다. 처리 마지막 순간의 상위 10 개, 마지막 1000 개 문장의 상위 10 개, 상위 10 개? –

답변

0

마지막 X 분 동안 top to을 수행해야한다면, 볼트에서 단어를 세는 때까지 X 분마다 틱 튜플로 볼트를 구성하십시오. 틱 튜플이 발생하면 상위 10 개 항목을 내보내 카운터를 유지할 수 있습니다 (유스 케이스 및 데이터 크기에 따라 다름)

큰 데이터 크기로 이제까지 10 번해야한다고 Redis 데이터 구조에서 카운트를 유지하고 필요에 따라 매 Y 초마다 상위 10 개를 방출합니다. 틱 튜플

SortedSet를 사용하여 레디 스하는 단어의 주파수를 쓰기 http://www.michael-noll.com/blog/2013/01/18/implementing-real-time-trending-topics-in-storm/

0

@ 마이클의 블로그를 참조하십시오. Storm이 처리하는 각 단어에 대해 ZINCRBY을 사용하여 Redis에서 해당 단어에 대한 카운터를 증가시킵니다.

SortedSet의 값은 값순으로 정렬되어 있으므로 ZREVRANGE과 같이 상위 10 개를 검색 할 수 있습니다.

ZREVRANGE myset 0-9 WITHSCORES