Подсчет уникальных пользователей с помощью Mapreduce для Java Appengine - PullRequest
6 голосов
/ 28 июня 2010

Я пытаюсь подсчитать количество уникальных пользователей в день в приложении java appengine. Я решил использовать платформу mapreduce (mapreduce.appspot.com) для Java-приложения, чтобы выполнить этот расчет в автономном режиме. Мне удалось создать работу по сокращению карты, которая проходит через все мои сущности, которые представляют одно пользовательское событие сеанса. Я также могу использовать простой счетчик. У меня есть несколько вопросов:

1) Как увеличить счетчик только один раз для каждого идентификатора пользователя? В настоящее время я сопоставляю сущности, которые содержат свойство идентификатора пользователя, но многие из этих сущностей могут содержать один и тот же идентификатор пользователя, так как я могу считать его только один раз?

2) Как только я сохраню результаты этих заданий в этих счетчиках - как я могу сохранить их в хранилище данных? Я вижу результаты счетчиков на странице состояния mapreduce, но я хочу, чтобы эти результаты автоматически сохранялись в хранилище данных.

Идеи

1 Ответ

1 голос
/ 28 июня 2010

На самом деле я еще не использовал функциональность MapReduce, но мое теоретическое понимание состоит в том, что вы можете записывать данные в хранилище данных из своего картографа.Вы можете создать тип Entity, называемый чем-то вроде UniqueCount, и вставлять одну сущность каждый раз, когда ваш маппер видит идентификатор, который он не видел раньше.Затем вы можете посчитать, сколько у вас есть уникальных идентификаторов.Фактически, вы можете просто обновлять счетчик каждый раз, когда находите новую уникальную сущность.Возможно, вы захотите использовать «sharded counter» для подсказок по созданию счетчика в хранилище данных, способного справиться с высокой пропускной способностью.

В конце концов, когда они завершат функциональность Reduce, я думаю, что вся эта задача станет довольно тривиальной.1003 *

...