2012-01-16 4 views
2

Je suis nouveau à la carte concept de réduction et je me demande si le problème suivant peut être résolu en l'utilisant.Carte Réduire pour l'analyse des séries chronologiques

Nous avons un journal de données sous la forme comme ceci:

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 

Nous voulons être en mesure de calculer les différents paramètres de temps, tels que:

  • Comment passe beaucoup de temps entre ouvert et Les opérations de fermeture sont globalement moyennes? ou
  • Combien de temps s'écoule entre la moyenne ouverte et la moyenne fermée pour chaque utilisateur?

Existe-t-il un moyen simple d'y parvenir avec map-reduce? Nous considérons MongoDB ou Hadoop.

La quantité de données peut être grande - des milliards d'enregistrements. Merci!

+0

C'est certainement possible, je l'ai déjà fait. –

Répondre

1

L'astuce ici est que vous devez "aplatir" vos données pendant la phase de la carte et l'envoyer au réducteur pour votre calcul. Donc, votre clé serait DocumentID (et peut-être User en fonction de votre cas d'utilisation) et ensuite la valeur est l'heure et l'opération (mettez d'abord l'heure si cela fonctionne mieux de cette façon). Dans votre réducteur, les rangées ci-dessus n'aboutiraient qu'à faire défiler des lignes dans une clé. Voici un exemple de quelque chose de très similaire http://allthingshadoop.com/2010/12/16/simple-hadoop-streaming-tutorial-using-joins-and-keys-with-python/

Questions connexes