返回顶部

收藏

python使用mongo的mapreduce实现简单的统计和group by操作

更多
mongo里面的数据是这样的:
doc1 = {
“freq”:1
…..
}
doc2 = {
“freq”:3
…..
}
要求是统计出freq=1的文档个数,freq=2的文档的个数。。。
典型的mapreduce任务,正好试试mongo的mapreduce。
感觉还行,做一些简单的聚集操作还凑活,看看回头有没有更复杂一些的应用。

                                #!/usr/bin/env python

import pymongo

from bson.code; import Code

def calc_freq_distribution(collection_handler):

out_collection_name = collection_handler.name+'_freqdist'

map = Code("function () {"

            "emit(this.freq, {count:1});"

            "}")

reduce = Code("function (key, values) {"

               "  var total = 0"

               "  for (var i = 0 i < values.length; i++) {"

               "    total += values[i].count;"

               "  }"

               "  return {count:total};"

               "}")

result = collection_handler.map_reduce(map, reduce, out = out_collection_name)

fname = out_collection_name+'.csv'

with open(fname, 'w') as f:

    for doc in result.find;():

        f.write;(','.join([str(doc['_id']), str(doc['value']['count'])])+'\n')

if name == 'main':

conn = pymongo.Connection;(['192.168.1.1'], 27018)

input_collection= conn.cname.things;

print calc_freq_distribution(merge_spam)

merge_ham = conn.antispam.mergeham;

print calc_freq_distribution(merge_ham)

标签:group,mapreduce,mongodb

收藏

0人收藏

支持

0

反对

0

相关聚客文章
  1. 博主 发表 2013-08-07 13:57:55 MongoDB Connector for Hadoop
  2. Liwen 发表 2011-10-09 08:26:54 在MongoDB中sum某个字段
  3. 张映 发表 2014-09-09 01:55:39 mongodb group php 操作
  4. 张映 发表 2014-09-09 01:55:39 mongodb group php 操作
  5. Liwen 发表 2011-10-09 08:26:54 在MongoDB中sum某个字段
  6. Zida 发表 2016-03-19 08:20:43 MongoDB MapReduce实践
  7. zangw 发表 2016-02-16 11:37:46 Answer by zangw for How to Group mongodb - mapRedu
  8. kafka0102 发表 2010-09-18 13:15:02 mongodb MapReduce使用初步
  9. 博主 发表 2012-11-12 16:41:00 Interview with Joe Devon, Organizer of the Los Ang
  10. Zida 发表 2016-03-19 08:20:43 MongoDB MapReduce实践
  11. H.E. 发表 2010-04-07 09:33:41 mongodb 入门 介绍
  12. H.E. 发表 2011-02-24 05:11:40 Hadoop MapReduce操作MySQL

发表评论