- 好,继续完成第二个需求,求某天内记录的个数统计,直接运行《实战4》编写好的MapReduce,出现异常
- 又是非数字NaN,通过分析结果,找到原因,原因出现在第一个MapReduce,证据:
- 上图中可以看到,times下出现了嵌套,这就导致在运算过程中,出现了异常
- 通过这个问题,需要修改第一个MapReduce中的Reduce,增加对嵌套的判断
function Reduce(key, values) { var ret={rfid:key}; var times = new Array(); for(var i = 0;i < values.length;i++){ if(values[i].times){ times = times.concat(values[i].times); }else{ times.push(values[i]); } } ret.times = times; return ret; }
- 重新运行第一个MapReduce,随后再运行第二个需求的MapReduce,没做任何修改,得出结果
- 从结果可知,1天内的记录为41次,2天内为42次......