Что лучший способ состоит в том, чтобы считать уникальными посетителями с Hadoop?

эй все, просто начав на hadoop и любопытный, что лучший способ в mapreduce состоял бы в том, чтобы считать уникальными посетителями, если бы Ваши файлы журнала были похожи на это...

DATE       siteID  action   username
05-05-2010 siteA   pageview jim
05-05-2010 siteB   pageview tom
05-05-2010 siteA   pageview jim
05-05-2010 siteB   pageview bob
05-05-2010 siteA   pageview mike

и для каждого сайта Вы хотели узнать уникальных посетителей к каждому сайту?

Я думал, что картопостроитель испустит имя пользователя siteID \t, и редуктор сохранил бы набор () уникального usersnames на ключ и затем испустил бы длину того набора. Однако это потенциально сохранило бы миллионы имен пользователей в памяти, которая не кажется правильным. У кого-либо есть лучший путь?

Я использую Python, передающий потоком между прочим

спасибо

9
задан James 21 May 2010 в 09:37
поделиться

3 ответа

Вы можете сделать это как двухэтапную операцию:

Первый шаг, испустить (username => siteID) , и пусть редуктор просто свернет несколько вхождений siteID с использованием набора - поскольку у вас обычно гораздо меньше сайтов, чем пользователей, этого должно быть нормально.

Затем на втором этапе вы можете отправить (siteID => username) и произвести простой подсчет, поскольку дубликаты были удалены.

3
ответ дан 3 November 2019 в 07:12
поделиться

Используйте вторичную сортировку для сортировки по идентификатору пользователя. Таким образом, вам не нужно ничего хранить в памяти - просто передавайте данные и увеличивайте свой отдельный счетчик каждый раз, когда вы видите изменение значения для определенного идентификатора сайта.

Вот некоторая документация .

1
ответ дан 3 November 2019 в 07:12
поделиться

Мой подход аналогичен тому, что дал tzaman, с небольшим изменением

  1. вывода карты: (username, siteid) => ("")
  2. уменьшить вывод: (siteid) => (1)
  3. map : identity mapper
  4. reduce: longsumreducer (т.е. просто резюмируйте)

Обратите внимание, что при первом сокращении не нужно переходить по какой-либо из представленных записей. Вы можете просто изучить ключ и произвести вывод.

HTH

1
ответ дан 3 November 2019 в 07:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: