Найти самый популярный URL-адрес посещения за последний день, последний час или последнюю минуту?

Исходный вопрос дается файлом, содержащим URL-адрес 5 ГБ, который посещался в последний день, найдите самый частый URL-адрес. Проблема может быть решена с помощью хеш-карты для подсчета вхождений различных URL-адресов и поиска вершины k с помощью минимальной кучи, что занимает время O (n log k).

Теперь я думаю, что если на вход был неограниченный онлайн-поток данных (вместо статического файла), то как я могу узнать топ k URL за последний день?

Или есть ли какое-либо улучшение, которое я могу внести в систему, которое позволит мне динамически получать лучшие URL-адреса за последнюю минуту, последний день и последние часы?

Любой намек будет оценен!!


person user1941469    schedule 02.01.2013    source источник
comment
оформить заказ stackoverflow.com/a/10190836/404145   -  person DiveInto    schedule 15.11.2015


Ответы (1)


Если вы готовы согласиться на вероятностный ответ, который может содержать несколько неверных записей, обязательно загляните в количество минут. Он был специально разработан для оценки частых элементов в потоке с использованием как можно меньшего объема памяти, и большинство реализаций поддерживают очень эффективное по времени и пространству приближение первых k элементов из потока. Кроме того, структура позволяет настраивать использование пространства, что делает ее идеальной для таких ситуаций. IIRC Google использует это для определения своих наиболее частых поисковых запросов.

В Интернете доступно несколько реализаций этой структуры данных.

Надеюсь это поможет!

person templatetypedef    schedule 02.01.2013