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 ruby
require 'mongo-hadoop'
MongoHadoop.map do |document|
{ :_id => document['user']['time_zone'], :count => 1 }
end
3.Reduce函数
然后是reduce函数,保存在文件reducer.rb中
#!/usr/bin/env ruby
require '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
来源:http://www.nosqlwiki.com/mongodb/25.html
分享到:
相关推荐
MapReduce是MongoDB处理大数据的一种方法,它借鉴了Hadoop的模型,用于执行分布式计算任务,例如数据分析和聚合。 通过运行这些示例代码,开发者不仅可以深入理解MongoDB的API用法,还能了解到如何在实际项目中应用...
MongoDB通过其高可扩展性和灵活性,处理和存储大量非结构化数据,而Spark则通过其强大的计算能力,对这些数据进行高效的实时处理,两者相辅相成,为企业的大数据处理和分析提供了强有力的支持。
书中内容涉及计算机、互联网、数据库、大数据、统计、金融等领域,详细总结了R语言与Java、MySQL、Redis、MongoDB、Cassandra、Hadoop、Hive、Hbase等技术的综合运用的解决方案,具有实战性,可操作性强。
书中内容涉及计算机、互联网、数据库、大数据、统计、金融等领域,详细总结了R语言与Java、MySQL、Redis、MongoDB、Cassandra、Hadoop、Hive、Hbase等技术的综合运用的解决方案,具有实战性,可操作性强。
书中内容涉及计算机、互联网、数据库、大数据、统计、金融等领域,详细总结了R语言在实际使用时与Java、MySQL、Redis、MongoDB、Cassandra、Hadoop、Hive、HBase等技术综合运用的解决方案,具有实战性及可操作性强等...
3. **强大的计算能力**:润乾报表内置丰富的计算函数和公式,支持复杂的统计计算和数据分析,如汇总、平均、最大值、最小值等,并能进行自定义计算。 4. **交互式功能**:用户可以通过ReportIDE设计交互式报表,...
大数据关键技术包括Hadoop、流计算、图计算和NoSQL数据库。Hadoop是一个开源的分布式处理框架,核心组件HDFS提供了分布式文件系统,MapReduce是处理大规模数据集的编程模型。流计算用于处理连续不断的数据流,例如...
数据仓库:数据仓库是一个用于集成和分析大规模数据的存储系统,一些知名的数据仓库包括Snowflake、Amazon Redshift等。 数据湖:数据湖是一个存储结构化和非结构化数据的存储池,用于支持数据分析和机器学习应用。...
- 分布式计算框架(如Hadoop MapReduce、Spark)处理海量数据。 - 分布式协调服务(如ZooKeeper、Kubernetes)确保系统稳定性和弹性。 - **云原生大数据处理平台**: - Kubernetes等容器编排平台简化部署和管理...
数据仓库:数据仓库是一个用于集成和分析大规模数据的存储系统,一些知名的数据仓库包括Snowflake、Amazon Redshift等。 数据湖:数据湖是一个存储结构化和非结构化数据的存储池,用于支持数据分析和机器学习应用。...
数据仓库:数据仓库是一个用于集成和分析大规模数据的存储系统,一些知名的数据仓库包括Snowflake、Amazon Redshift等。 数据湖:数据湖是一个存储结构化和非结构化数据的存储池,用于支持数据分析和机器学习应用。...
数据仓库:数据仓库是一个用于集成和分析大规模数据的存储系统,一些知名的数据仓库包括Snowflake、Amazon Redshift等。 数据湖:数据湖是一个存储结构化和非结构化数据的存储池,用于支持数据分析和机器学习应用。...
数据仓库:数据仓库是一个用于集成和分析大规模数据的存储系统,一些知名的数据仓库包括Snowflake、Amazon Redshift等。 数据湖:数据湖是一个存储结构化和非结构化数据的存储池,用于支持数据分析和机器学习应用。...
3. **hadoop-2.7.1.tar.gz**: Hadoop是Apache基金会的一个开源项目,提供了一个分布式文件系统(HDFS)和MapReduce计算框架,是大数据处理的核心组件。这个版本的Hadoop支持大规模数据的存储和处理。 4. **apache-...