2012-04-26 57 views
2

在这里为Map/Reduce和CouchDB的业余爱好者排名。我有一个CouchDB,里面有大约600,000行数据,表示记录的视图。我的愿望是生成一个图表,显示整个数据集中每条记录的点击率。CouchDB - 将MapReduce结果传递到第二个MapReduce函数

我已经实现的Map/Reduce函数来分组,像这样:

function(doc) { 
    emit(doc.id, doc); 
} 

和:

function(key, values) { 
    return values.length; 
} 

,因为现在还是有降低值相当数量的,我们只希望,比如图表上的100个数据点,这不是很有用。另外,它需要永远运行。

我可以检索每一个X行,但将是理想将通过这些降低的结果反馈到另一个减少函数,它接受它的值的平均值,所以我最终得到一套漂亮的,比方说,100结果,这对于投入高级概览图来查看匹配的分布非常有用。

这可能吗? (如果是的话,密钥会是什么?)或者我只是在我的MapReduce代码中搞砸了一些东西,这使得它非常不友好,因此允许我在我的应用程序代码中执行此操作。只有33,500个结果返回。

谢谢, 马特

+0

两个相关的问题 - 如果等待时间是通过网络搅动了JSON,是有一些工厂做服务器上的基于JS定制后处理?或者我只是做错了什么?特别是在阅读[这篇文章](http://wiki.apache.org/couchdb/How_to_handle_stats_aggregation)后,我想知道是否需要在它到达CouchDB之前进行预先聚合(这是不行的,因为我总是需要查看整个数据集的摘要 - 即不按时间分割),或者不使用CouchDB。 我确实试图强迫它做一些不擅长的事情吗? – nullPainter 2012-04-26 20:48:28

+0

再次阅读这篇文章,我想我不是索引原始访问日志数据,而是可以为每个记录每个适当粒度的时间段(例如,每个记录每天的点击次数)命中索引。将实验! – nullPainter 2012-04-26 23:59:52

回答

1

要回答我的问题:

  1. this article,CouchDB的不支持传递的Map/Reduce的输入输出到其他的Map/Reduce函数,虽然文章指出,其他项目如disco确实支持这一点。

  2. 自定义服务器端处理可以通过CouchDB列表的方式执行 - 例如,sorting by value

相关问题