Tag: mapreduce

MapReduce比JS更快吗?

我用Node.js使用MongoDB 在Mongo中使用MapReduce有没有速度优势,而不是获得完整的结果集,并在我自己的JS做一个地图和减less?

如何在Mongoose mapreduce中调用相关模型

所以这可能是mapreduce不是处理这个最好的方法,但这是我想要实现的。 我有一个事件模式和场地模式。 每个事件有多个date和0/1地点​​。 我希望在事件保存时为每个可能的date生成条目,并将其与另一个集合中的场地信息一起存储 – 例如发生的事件。 但我有2个问题/问题。 即使在使用示波器时,我似乎也无法从地图function中调用外部事件,所以我的电话查找地点信息失败。 哪里是最好的地方处理每个date生成条目? 循环浏览地图中的date并发出每个date? 或者在reduce或finalize函数中? 而不是仅仅告诉我,我不能从一个mapreduce函数调用dbref,我宁愿find最有效的解决scheme来创build事件保存中包含所需事件/场地数据的事件集合。 我打开其他方法,但下面的代码应该概述我的需要。 Event.pre('save', function (next) { var o = {}; o.scope = {Venue: mongoose.model.Venue}; o.map = function () { var data = {dates: this.dates}; var self = this; if(this.venue) { Venue.view(this.venue, {}, function(err, doc) { if(doc) { data.venue_name = doc.name; } emit(self._id, data); }); […]

Map-Reduce in Node

我有我的array=[{id:"1"}, {id:"2"}, {id:"3"}]并要将其转换为对象: {"1":true, "2", true, "3":true}; 所以我做了以下工作: async.reduce(myArray, {}, function (memo, item, callback) { memo[item.id] = true; callback(null, memo); }, function (err, myObj) { console.log("converted object", myObj); } 它做的工作,但我不知道这是否有意义的performance或毫无意义? 在这里他们build议使用map reduce,但是我还是很困惑,怎样才能用map和reduce来提高性能; 任何帮助表示赞赏。 谢谢

如何使用hadoop map / reduce与nodejs服务器?

我有一个与Nodejs服务器和HTML客户端的Web应用程序。 我有很多c ++algorithm集成的服务器。 为了减less服务器负载和高性能,我想从服务器并行分配我的algorithm。 我是Hadoop及其Map / Reduce编程概念的新手。 题: 我应该使用这个架构的集群吗? 这是否发生在地图缩小?

从mongoDB服务器获取Node服务器中的数据块

你好我有一个在mongoDB whoose大小为30K的集合。 当我从节点服务器运行查找查询(我正在使用mongoose)时,会出现以下问题。 1:从数据库服务器获取结果需要很长时间 2:从结果数据创buildJSON对象时,Node服务器崩溃 为了解决这个问题,我试图获取块中的数据( 在文档中说明 )现在我正在我的stream.oncallback中获得docuemnt。 这是我的代码 var index=1; var stream = MyModel.find().stream(); stream.on('data', function (doc) { console.log("document number"+ index); index++; }).on('error', function (err) { // handle the error }).on('close', function () { // the stream is closed }); 而我的代码是 Document number1 document number2 …… documant number 30000. 输出显示数据库正在逐个发送文档。 现在我的问题是,是否有任何方法来获取5000个文档块的数据。 还是有没有更好的方法来做同样的事情? 提前致谢 我试过使用batch_size(),但它并没有解决我的问题 […]

挑战:从input元素聚合第二元素

对MongoDB来说,这是一个挑战,我觉得很有趣。 给定一个时间戳集合events和一个特定的inputselect器_object ,我们如何汇总一个input后面的event文档列表? 例如,Mongoose中的Schema: var EventSchema = new Schema({ _object: { type: ObjectId } , timestamp: { type: Date, default: Date.now } }); 示例集合: [ { _id: ObjectId('1'), _object: ObjectId('123abc…1', timestamp: 'Sat Jun 21 2014 16:30:01 GMT-0400 (EDT) ) } , { _id: ObjectId('2'), _object: ObjectId('123abc…2', timestamp: 'Sat Jun 22 2014 16:30:00 GMT-0400 (EDT) ) […]

Cloudant中的距离计算

这是我正在努力解决的问题。 客户端通过由Node.js应用程序pipe理的API发送其当前位置。 Cloudant数据库存储坐标列表(几千)。 a)所有坐标列表的最佳方法是什么?b)客户位置的每个坐标的距离(c)落在客户位置半径的X公里范围内 已经为这些存储的坐标创build了地理空间索引。 速度和效率是关键,但有时这些可能是相反的品质。 如果可能的话,我更愿意使用Cloudant中的本地函数而不是自定义代码。

使用mongoose对MongoDB进行mapreduce时,不能使用underscore.js中的reduce函数

我有一个电影collections,每部电影有几个明星,例如: { movie: "Pride & Prejudice", starList: ["Keira Knightley", "Matthew Macfadyen"] } { movie: "Begin Again", starList: ["Keira Knightley", "Mark Ruffalo"] } 我想得到一个倒序索引,每个明星都有几部电影 { star: "Keira Knightley", movieList: ["Pride & Prejudice", "Begin Again"] } 这可以通过在MongoDB上使用mapreduce来完成。 我用mongoose驱动程序使用nodejs。 以下是代码: var _ = require("underscore"); var o = {}; o.scope = { _: _ }; o.map = function() { […]

JavaScript地图/减less返回按数量分组

我有一个JSON集合作为一个数组。 我想在集合中按三个字段进行分组,然后将结果与匹配文档的计数一起返回。 下面的例子将有希望更清楚。 返回的JSON文档集合: [ { _id: 1, browser: 'chrome', ipAddress: '222.111.111.0', uri: 'example1.com' }, { _id: 2, browser: 'chrome', ipAddress: '222.111.111.0', uri: 'example1.com' }, { _id: 3, browser: 'opera', ipAddress: '222.0.888.0', uri: 'example1.com' }, { _id: 4, browser: 'chrome', ipAddress: '222.111.222.0', uri: 'sample1.com' }, { _id: 5, browser: 'chrome', ipAddress: '222.111.222.0', uri: 'sample1.com' }, […]

MapReduce中的MongoDBdynamicvariables

我有用于mongodb mapreduce的node.js路由器: app.get('/api/facets/:collection/:groupby', function(req, res) { var collection = db.collection(req.params.collection); var groupby = req.params.groupby; var map = function() { if (!this.region) { return; } for (index in this.region) { emit(this.region[index], 1); } } var reduce = function(previous, current) { var count = 0; for (index in current) { count += current[index]; } return count; } […]