MongoDB集成Hadoop进行统计计算
来源:互联网 发布:http请求json数据 编辑:程序博客网 时间:2024/06/14 01:45
MongoDB 本身可以做一些简单的统计工作,包括其内置的基于 Javascript 的 MapReduce 框架,也包括在MongoDB 2.2版本中引入的新的统计框架。除此之外,MongoDB 还提供了对外部统计工具的接口,这就是本文要说的MongoDB-Hadoop的数据中间件。文章内容来源于MongoDB官方博客。
原理图解
MongoDB与Hadoop相结合的方式如下图所未,MongoDB作为数据源存储以及数据结果存储。而具体的计算过程在Hadoop中进行。
这一套处理流程,允许我们通过 Python, Ruby 与 JavaScript 来写MapReduce函数进行数据统计,而不是使用Java。
例子
首先准备好Hadoop环境,并安装好Hadoop,MongoDB中间件。然后通过下面的方式进行数据处理。
1.数据准备
从Twitter API导入原始数据到MongoDB中
curl https://stream.twitter.com/1/statuses/sample.json -u<login>:<password> | mongoimport -d twitter -c in
2.Map函数
写一个map函数,保存在文件mapper.rb 中
#!/usr/bin/env rubyrequire 'mongo-hadoop'MongoHadoop.map do |document| { :_id => document['user']['time_zone'], :count => 1 }end
3.Reduce函数
然后是reduce函数,保存在文件reducer.rb中
#!/usr/bin/env rubyrequire 'mongo-hadoop'MongoHadoop.reduce do |key, values| count = sum = 0 values.each do |value| count += 1 sum += value['num'] end { :_id => key, :average => sum / count }end
4.运行脚本
创建一个运行脚本,写入下面内容,就可以利用上面的MapReduce方法处理第一步中获取的数据。
hadoop jar mongo-hadoop-streaming-assembly*.jar -mapper mapper.rb -reducer reducer.rb -inputURI mongodb://127.0.0.1/twitter.in -outputURI mongodb://127.0.0.1/twitter.out
翻译自:blog.mongodb.org
- MongoDB集成Hadoop进行统计计算
- Hadoop分组统计计算案例
- 用Hadoop进行MapReduce计算
- Python使用Hadoop进行词频统计
- 使用 Linux 和 Hadoop 进行分布式计算
- 使用 Linux 和 Hadoop 进行分布式计算
- 使用 Linux 和 Hadoop 进行分布式计算
- 使用 Linux 和 Hadoop 进行分布式计算
- 使用Linux 和Hadoop 进行分布式计算
- 使用linux和HADOOP进行分布式计算
- 使用 Linux 和 Hadoop 进行分布式计算
- 使用 Linux 和 Hadoop 进行分布式计算
- 使用MongoDB的MapReduce进行区域地震信息统计实验
- Hadoop集群下进行集成测试的小策略
- 如何使用hadoop对海量数据进行统计并排序
- 利用Hadoop平台的map-reduce进行词频统计
- hadoop mongodb
- 用 Linux 和 Apache Hadoop 进行云计算
- 外贸B2C系列:magento wine模板 slidershow超链接失效解决方法
- git工具用法 && git管理googlecode
- ubuntu 12安装xen
- linq学习(from)
- [linux常用命令] 2、强大的搜索指令grep
- MongoDB集成Hadoop进行统计计算
- hdu 4314 Save the dwarfs
- 二.redis 数据类型
- 设计模式(1):单例模式
- Oracle unable to extend table in tablespace
- Winform中Control.KeyDown 事件(整理自MSDN)
- cmd一些命令详解
- SQL 语句修改字段名称
- 学习PHP面向对象(二)构造方法与析构方法