`
Mootools
  • 浏览: 45518 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

MongoDB集成Hadoop进行统计计算

 
阅读更多

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

1
1
分享到:
评论

相关推荐

    MongoDB for Java Developers的随书阅读代码

    MapReduce是MongoDB处理大数据的一种方法,它借鉴了Hadoop的模型,用于执行分布式计算任务,例如数据分析和聚合。 通过运行这些示例代码,开发者不仅可以深入理解MongoDB的API用法,还能了解到如何在实际项目中应用...

    MongoDB Spark - Mongo首席技術架構師唐建法

    MongoDB通过其高可扩展性和灵活性,处理和存储大量非结构化数据,而Spark则通过其强大的计算能力,对这些数据进行高效的实时处理,两者相辅相成,为企业的大数据处理和分析提供了强有力的支持。

    R的极客理想 工具篇+高级开发篇+量化投资篇.zip

    书中内容涉及计算机、互联网、数据库、大数据、统计、金融等领域,详细总结了R语言与Java、MySQL、Redis、MongoDB、Cassandra、Hadoop、Hive、Hbase等技术的综合运用的解决方案,具有实战性,可操作性强。

    R的极客理想:工具篇,完整扫描版

    书中内容涉及计算机、互联网、数据库、大数据、统计、金融等领域,详细总结了R语言与Java、MySQL、Redis、MongoDB、Cassandra、Hadoop、Hive、Hbase等技术的综合运用的解决方案,具有实战性,可操作性强。

    R的极客理想 工具篇

    书中内容涉及计算机、互联网、数据库、大数据、统计、金融等领域,详细总结了R语言在实际使用时与Java、MySQL、Redis、MongoDB、Cassandra、Hadoop、Hive、HBase等技术综合运用的解决方案,具有实战性及可操作性强等...

    润乾报表ReportIDE

    3. **强大的计算能力**:润乾报表内置丰富的计算函数和公式,支持复杂的统计计算和数据分析,如汇总、平均、最大值、最小值等,并能进行自定义计算。 4. **交互式功能**:用户可以通过ReportIDE设计交互式报表,...

    大数据基础技术概述.pptx

    大数据关键技术包括Hadoop、流计算、图计算和NoSQL数据库。Hadoop是一个开源的分布式处理框架,核心组件HDFS提供了分布式文件系统,MapReduce是处理大规模数据集的编程模型。流计算用于处理连续不断的数据流,例如...

    【前端素材】大数据-设备统计.zip

    数据仓库:数据仓库是一个用于集成和分析大规模数据的存储系统,一些知名的数据仓库包括Snowflake、Amazon Redshift等。 数据湖:数据湖是一个存储结构化和非结构化数据的存储池,用于支持数据分析和机器学习应用。...

    分布式能源大数据集成与处理.pptx

    - 分布式计算框架(如Hadoop MapReduce、Spark)处理海量数据。 - 分布式协调服务(如ZooKeeper、Kubernetes)确保系统稳定性和弹性。 - **云原生大数据处理平台**: - Kubernetes等容器编排平台简化部署和管理...

    【前端素材】大数据-大屏数据统计.zip

    数据仓库:数据仓库是一个用于集成和分析大规模数据的存储系统,一些知名的数据仓库包括Snowflake、Amazon Redshift等。 数据湖:数据湖是一个存储结构化和非结构化数据的存储池,用于支持数据分析和机器学习应用。...

    【前端素材】大数据-物联网平台数据统计.zip

    数据仓库:数据仓库是一个用于集成和分析大规模数据的存储系统,一些知名的数据仓库包括Snowflake、Amazon Redshift等。 数据湖:数据湖是一个存储结构化和非结构化数据的存储池,用于支持数据分析和机器学习应用。...

    【前端素材】大数据-大数据统计展示大屏.zip

    数据仓库:数据仓库是一个用于集成和分析大规模数据的存储系统,一些知名的数据仓库包括Snowflake、Amazon Redshift等。 数据湖:数据湖是一个存储结构化和非结构化数据的存储池,用于支持数据分析和机器学习应用。...

    【前端素材】大数据-XXX科技业务数据统计.zip

    数据仓库:数据仓库是一个用于集成和分析大规模数据的存储系统,一些知名的数据仓库包括Snowflake、Amazon Redshift等。 数据湖:数据湖是一个存储结构化和非结构化数据的存储池,用于支持数据分析和机器学习应用。...

    大数据开发常用包.zip

    3. **hadoop-2.7.1.tar.gz**: Hadoop是Apache基金会的一个开源项目,提供了一个分布式文件系统(HDFS)和MapReduce计算框架,是大数据处理的核心组件。这个版本的Hadoop支持大规模数据的存储和处理。 4. **apache-...

Global site tag (gtag.js) - Google Analytics