redis サーバーから文章を読み込んで、各単語の出現回数を数えています。ここで、カウントに基づいて上位 10 語を計算したいと考えています。Redis サーバーから文を読み取るためのスパウトが 1 つ、文を単語に分割するボルトが 1 つ、単語をカウントするボルトが 1 つあります。
カウントに基づいて上位 10 語を見つけるには、どのようなアプローチが必要ですか?
redis サーバーから文章を読み込んで、各単語の出現回数を数えています。ここで、カウントに基づいて上位 10 語を計算したいと考えています。Redis サーバーから文を読み取るためのスパウトが 1 つ、文を単語に分割するボルトが 1 つ、単語をカウントするボルトが 1 つあります。
カウントに基づいて上位 10 語を見つけるには、どのようなアプローチが必要ですか?
たとえば、最後の X 分間トップを実行する必要がある場合は、X 分ごとに目盛りタプルを使用してボルトを構成し、それまでボルト内の単語を数え続けます。tick tuple が上位 10 個のアイテムを発行するのに遭遇すると、カウンターをメモリ内ツリー マップに維持できます (ユースケースとデータ サイズによって異なります)。
ここで、Redis データ構造でカウントを維持し、必要に応じて Y 秒ごとにトップ 10 を発行する大きなデータ サイズでこれまでにトップ 10 を実行する必要があるとします。
ティックタプルについては、Michael のブログ @ http://www.michael-noll.com/blog/2013/01/18/implementing-real-time-trending-topics-in-storm/を参照してください。