2011-09-23 18 views
8

MongoDB için yeni yaşındayım, harita kullanıyorum. Birisi harita kullanırken/küçültürken nasıl hata ayıklayacağımı söyler mi? "Print()" işlevini kullandım ancak MongoDB kabuğunda hiç bir şey basılmadı. Ben kabuk yukarıdaki işlevi yazıp basın tamamladıktan sonra Enter zaman, hiçbir şey kabuk üzerindemongodb: mongodb kabuğunda eşlemede hata ayıklama/azaltma

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; 
    } 

baskılı alır: Aşağıdaki benim azaltmak fonksiyonudur. Hata ayıklamak için başka bir şey var mı?

Teşekkür

cevap

19

O içinde print() ifadeler yerine kabuk yerine, fonksiyonlar günlük dosyasına yazılır azaltmak gibi görünüyor. Bu yüzden, hata ayıklama çıktınız için günlük dosyanızı kontrol edin.

Mood işlemini başlatırken günlük dosyasını --logpath D:\path\to\log.txt parametresini kullanarak belirtebilirsiniz.

+5

Linux günlük dosyası /var/log/mongodb/mongodb.log –

+0

Mac OS bulunur: /usr/local/var/log/mongodb/mongo.log, hala yapamıyorum günlük dosyasında bir şey görmek için. –

+2

tail -f /usr/local/var/log/mongodb/mongo.log benim için gayet iyi çalıştı. Bu dosyaya azaltılmış işlev çıktıları içinde denilen yazdırma ("bazı hata ayıklama metni"). Mongonunuzun bu dosyaya günlük yazdığından emin ol. Belki de onu geçersiz kıldın. Mongo conf'inizi kontrol edin (/usr/local/etc/mongod.conf). – ecdeveloper

3

Cevabınız mongodb web sitesinde özel bir sayfa var: Açıkçası http://www.mongodb.org/display/DOCS/Troubleshooting+MapReduce

ve sizin yanlış azaltmak: çizgi result.count ++ hangi dizi değerler içerdiği öğelerin sayısını içeren sona erecek (Haritada paradigmayı azaltır) hiçbir şey ifade etmez. Küçültme fonksiyonunuz sadece bir "rasgele" ana makine adı döndürüyor (çünkü herhangi bir adımda haritayı azaltmak için mapreduce algo, tahmin edilemez) ve rastgele bir sayı.

Ne yapmak istediğinizi açıklayabilir misiniz? (tahminim, sunucu başına "bir şey" saymak istediğiniz olurdu)

4

Örnek verilerde toplama sonuçları elde etmenize olanak tanıyan, bu basit çevrimiçi MongoDB MapReduce hata ayıklayıcısına bir göz atın Harita/Azalt/Sonlandırma işlevlerinin tarayıcı dev ortamınızda doğru bir şekilde hata ayıklanması.

Umarım faydalı olacaktır.

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

+1

sadece bir bağlantı sağladığını görebiliyorum. Cevabınız kendi içinde olmalıdır. –

+0

Lütfen "[Nasıl iyi bir cevap yazarım?"] Okuyun (http://stackoverflow.com/help/how-to-answer) –

+0

Hata ayıklayıcınız harika! tks :-) – Fred