10
votes

MongoDB: Comment déboguer carte / réduire sur la coquille MongoDb

Je suis nouveau à mongodb, j'utilise la carte / réduit. Quelqu'un peut-il me dire comment déboguer lors de l'utilisation de la carte / réduisez-vous? J'ai utilisé "Imprimer ()" Fonction mais sur la coquille MongoDb, rien n'est imprimé. Voici ma fonction de réduction:

    var reduce = function(key, values){
        var result = {count: 0, host: ""};

        for(var i in values){
        result.count++;
        result.host = values[i].host;
        print(key+" : "+values[i]);
        }
        return result;
    }


0 commentaires

3 Réponses :


20
votes

Il semble que impression () Les instructions de réduction des fonctions sont écrites dans le fichier journal, plutôt que la coquille. Vérifiez donc votre fichier journal pour votre sortie de débogage.

Vous pouvez spécifier le fichier journal à l'aide d'un - logpath D: \ chemin \ to \ log.txt paramètre lors du démarrage du processus Mongod.


4 commentaires

Le fichier journal de Linux est situé dans /var/log/mongodb/mongodb.log.


Mac OS: /USR/LOCAL/VAR/LOG/MONGODB/MONGO.LOG, je ne peux toujours rien voir dans le fichier journal.


queue -f /usr/local/var/log/mongodb/mongo.log a fonctionné pour moi juste bien. Imprimer ("Quelqu'un de débogage") a appelé à partir de la fonction de fonctionnement à ce fichier. Assurez-vous que votre Mongo écrit des journaux dans ce fichier. Peut-être que vous l'a remplacé. Vérifiez votre Mongo Conf (/usr/local/etc/mongod.conf).


L'emplacement ci-dessus pour Mac OS n'a pas fonctionné pour moi. Vous ferez mieux d'ajouter le drapeau --LogPath avec votre propre fichier. Je peux voir la sortie lors de l'utilisation d'impression () de cette façon



3
votes

Il existe une page dédiée sur le site Web de Mongodb qui est votre réponse: http: // www.mongodb.org/display/docs/troubleMooting+Mapreduce

Et évidemment, votre réduction est fausse: le résultat de la ligne ++ sera finalement contenant le nombre d'éléments contenus dans les valeurs de matrice qui (dans la carte réduire le paradigme) ne signifie rien. Votre fonction réduite ne fait que renvoyer un nom d'hôte "aléatoire" (car Mapreduce Algo n'est pas prédicable sur la teneur en réduite à une étape) et un nombre aléatoire.

Pouvez-vous expliquer ce que vous voulez faire? (Je suppose que vous voulez compter le nombre de "quelque chose" par hôte)


0 commentaires

4
votes

Jetez un coup d'œil à ce simple projet de débogueur de MongoDB MongoDB Mongodb, qui permet d'obtenir des résultats d'agrégation sur des données d'échantillonnage, ainsi que d'effectuer un débogage étape par étape de la carte / réduction / finalisez les fonctions dans votre navigateur Environment.

J'espère que ce sera utile.

http://targetprocess.github.io/mongo-mapreduce-debug-online /


3 commentaires

Ne fournissez pas seulement un lien. Votre réponse devrait être autonome.


Veuillez lire "Comment puis-je écrire une bonne réponse?"


Votre débogueur est génial! tks :-)