mongoDb的mapReduce应用 外部变量使用关键部分springMVC;

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全局变量的使用;

其他循环只是测试用的,有点累赘;可以不看;

时间: 2024-10-03 19:12:41

mongoDb的mapReduce应用 外部变量使用关键部分springMVC;的相关文章

关于mongodb的mapReduce

由于nodejs本身的限制,在程序中使用js进行大批量计算效率不高.而V8引擎自身对内存大小的限制(64位系统下1.4G),同样限制了数据规模. 因此,相对于从mongodb中抽出数据进行计算,在mongodb中利用聚合函数或者其他方法完成计算,避开nodejs自身限制的方案在可靠性和扩展性上都相对较为令人满意. mongodb支持类似SQL中的聚合函数,虽然语法不通,不过基本原理类似. mongodb自带的接口中,aggregate被用来实现聚合查询: rec = db.LIBRARY.agg

shell if判断(曾经被一个字符串相等的判断纠结半小时,最后只是if后少了个空格!) 和 awk引用外部变量判断

一.if判断 数字: $A=12 $B=15 if(("$A"<"$B")) if(("$A"=="$B")) 字符串: $A="HELLO" $B="WORLD" if [ "$A" = "FACT_LOGIN_USER" ] if [ "$A" = "$B" ] PS:字符串比较的时候注意 'if'

CoffeeScript中的外部变量与局部变量的屏蔽

刚接触CoffeeScript时,一直不清楚它存在的意义,搜索过部分资料,可以总结为两点:①语法糖,减少代码量增加可读性②增强js代码的合法性,编译之后的js代码跟手动写的相比基本没语法错误. 其实自我感觉代码量确实减少了,但是也并不是很可观,语法糖确实使用起来很方便,而语法错误这一点,个人感觉只要是对js有一定了解的人不一定会比他差,差也差不太多,个人感觉. 说一下在使用过程中遇到的比较头疼的一点,就是外部变量与局部变量的屏蔽机制. 如下代码: a = (callback) -> setTim

AngularJs 如何监视外部变量是否改变? 如何使用$cookieStore保存cookie?

1. 如何监视外部变量是否改变? 如果我们要求:在$scope之外改变一个外部变量时,触发一些操作.我们可以将外部变量写进$watch中,如图中所示.返回的n表示newValue,即新的值.o表示old value,即旧值.如果有些特殊操作,我们可以直接判断n或o的值.比如这里的if(n==true)就是判断新的值是否等于true. 2. 如何操作cookie? 当AngularJs页面刷新时,会刷新js,之前页面上的变量都会重置:或者我们用超链接打开一个新窗口的AngularJs页面时,新窗口

深入研究Block捕获外部变量和__block实现原理

Blocks是C语言的扩充功能,而Apple 在OS X Snow Leopard 和 iOS 4中引入了这个新功能“Blocks”.从那开始,Block就出现在iOS和Mac系统各个API中,并被大家广泛使用.一句话来形容Blocks,带有自动变量(局部变量)的匿名函数. Block在OC中的实现如下: struct Block_layout { void *isa; int flags; int reserved; void (*invoke)(void *, ...); struct Bl

一个注意事项:内部类引用的外部变量必须是final的

之前写过一个项目,好久没更新了,最近翻起以前的代码,发现在这里报了一个错.(现在转到Intellij了,从前在Eclipse luna中是可以编译通过的,Eclipse mars也会报错,JDK版本都是1.8,还没去查为什么) 为什么在内部类中引用外部变量时,必须声明为final呢? 最开始我想的是,会和Java的内存模型有关.因为我们都知道,带有static的变量或者方法是属于类的,也就是说,类成员是被储存在堆内存里面的.那么final是否也是这样?经过查找资料,得知:final 是保护 所修

awk调用外部变量

一.用awk 有以下几种方法去调用变量:1.  awk '{print a, b}' a=111 b=222 yourfile注意, 变量位置要在 file 名之前, 否则就不能调用.还有, 于 BEGIN{}中是不能调用这些的variable. 要用之后所讲的第二种方法才可解决.2.  awk –v a=111 –v b=222 '{print a,b}' yourfile注意, 对每一个变量加一个 –v 作传递.3.  awk '{print " ' "$LOGNAME"

awk引用外部变量及调用系统命令方法

目标:想用awk与scp命令批量传送文件 前提:先搭好主机间的免密登陆环境(参考:http://www.cnblogs.com/tankaixiong/p/4172942.html) 实现脚本方法: 1.在一个文件中记录好各个主机的端口与ip地址,第一列为主机描述信息,参考信息 [[email protected] share]# cat scp_port_ip.txt host1 33330 192.168.10.11 host2 33331 192.168.20.22 host3 33332

MongoDB:Map-Reduce

Map-reduce是一个考虑大型数据得到有用聚集结果的数据处理程式(paradigm).针对map-reduce操作,MongoDB提供来mapreduce命令. 考虑下面的map-reduce操作: 在这个map-reduce操作里,MongoDB为每个输入的文档(比如,集合中满足了查询条件的文档)应用了map操作.Map函数输入键值对.对拥有多个值的那些键,MongoDB采用reduce阶段,即收集和压缩聚集的数据.Mongo-DB然后把结果存在一个集合里面.Reduce函数的输出可以选择