2012-01-16 3 views
2

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

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

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 average для каждого пользователя?

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

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

+0

Это, безусловно, возможно, я сделал это раньше. –

ответ

1

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

Смежные вопросы