標籤:mapred putty into function str ndt red style 全域變數
long interval = 900000;
long startTime = new Date("2016/03/01 01:00:00").getTime();
long endTime = new Date("2016/03/31 23:59:59").getTime();
String tagUid=(String) arr.get(i);
Query query = Query.query(Criteria.where("TagGuid").in(tagUid));//查詢過濾條件 query.addCriteria(Criteria.where("mDay").is(1));//添加過濾條件 MapReduceOptions options = MapReduceOptions.options();//設定reduce配置項 Map scope = new HashMap(); scope.put("interval", interval); scope.put("startTime", startTime); options.scopeVariables(scope).verbose(true).outputTypeInline();//mapreduce外部變數插入 String mapFunction1 = "function () {" + "var sSecond=new Date(this.Atime).getTime()," + "tag=parseInt((sSecond-startTime)/interval);" + "emit({guid:this.TagGuid,time:tag},{tagUid:this.TagGuid,atime:this.Atime,value:this.TagValue,year:this.mYear,month:this.mMonth,day:this.mDay,seeId:this.SeeID})}";//map方法編寫 String reduceFunction = "function(key,values){ return values[0];} ";//reduce方法編寫 MapReduceResults<ReturnMessage> result = mongoTemplate.mapReduce(query, "Hdata03", mapFunction1, reduceFunction,options, ReturnMessage.class);//方法調用 Iterator<ReturnMessage> it = result.iterator();//得到結果 long p=0; while (it.hasNext()) { ReturnMessage message = it.next();//自訂實體類容器 String key=(String) JSONObject.fromObject(message.getId()).get("guid"); String insertSql="INSERT INTO t_base_data (data) VALUES (‘"+message.getValue()+"‘)";//插入postgresql baseDao.updateBySql(insertSql); }
最後插入postgesql做了迴圈插入 很不科學,浪費大量時間;
主要示範了一個mapreduce全域變數的使用;
其他迴圈只是測試用的,有點累贅;可以不看;
mongoDb的mapReduce應用 外部變數使用關鍵區段springMVC;