Map Reduce для анализа временных рядов - PullRequest
2 голосов
/ 16 января 2012

Я новичок в понятии карты и задаюсь вопросом, можно ли с помощью него решить следующую проблему.

У нас есть журнал данных в такой форме:

TransID     Date           Operation   DocumentID   User
1           01/01/2010     Open        aaa          Anne
2           01/11/2010     Close       aaa          Anne
3           01/12/2010     Open        bbb          Mary
4           01/12/2010     Close       bbb          Mary

Мыхотите иметь возможность рассчитывать различные метрики времени, такие как:

  • Сколько времени проходит в среднем между операциями «Открыть» и «Закрыть»?или
  • Сколько времени проходит между средними значениями Open и Close для каждого пользователя?

Есть ли простой способ добиться этого с помощью map-Reduce?Мы рассматриваем MongoDB или Hadoop.

Объем данных может быть большим - миллиарды записей.Спасибо!

1 Ответ

1 голос
/ 17 января 2012

Хитрость в том, что вам нужно «сгладить» ваши данные во время фазы карты и отправить их в редуктор для ваших расчетов.Таким образом, вашим ключом будет DocumentID (и, возможно, User в зависимости от вашего варианта использования), а затем значение - это время и операция (сначала укажите время, если так будет лучше).В вашем редукторе вышеприведенные строки приводят только к тому, что строки могут проходить внутри ключа.Вот пример чего-то очень похожего http://allthingshadoop.com/2010/12/16/simple-hadoop-streaming-tutorial-using-joins-and-keys-with-python/

...