MongoDB整合Hadoop進行統計計算

來源:互聯網
上載者:User

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: | 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
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.