最後的處理結果儲存在“ttt_date_out”表中,繼續寫下一個MapReduce,預期結果是所有記錄的平均記錄產生時間 Map:
function Map() {var count_time = 0;var arv_time = 0;var times = this.value.times;if(times){if(times.length > 1){for(var i = 0;i < times.length;i++){if(i != times.length - 1){count_time += times[i] - times[i+1];}}}arv_time = count_time / (times.length - 1);emit('result', arv_time); }}
Reduce:
function Reduce(key, values) {var ret={msg:key};var count_times = 0;for(var i = 0;i < values.length;i++){count_times += values[i];}ret.arv_time = count_times / values.length;return ret;}
Finalize:(上一個MapReduce中沒有,在這裡主要作用為對結果再次進行處理)
function Finalize(key, reduced) {// 轉成秒 var second = parseFloat(reduced) /1000; // 轉分鐘var minute = parseInt(second / 60);// 剩餘秒var s = second % 60;// 轉小時var hour = parseInt(minute / 60);// 剩餘分var m = minute % 60;// 轉天var day = parseInt(hour / 24);// 剩餘小時var h = hour % 24; return day + " 天 " + h + " 小時 " + m + " 分鐘 " + s + " 秒 ";}
配置In & Out
最終結果
小結: 經過一天的努力,完成了預期的目標,明天繼續瞭解一下,最終操作實際的日誌表,看看效果。 MapRecude的編寫語言為Javascript,剛開始是用命令列,編寫以及閱讀太過麻煩,最後雖然使用MongoVUE,但是調試起來很困難,沒有debug。找了很多資料也沒有具體的好方法,悲劇。