MongoDB統合Hadoopは統計計算を行います.
1775 ワード
MongoDB自体は簡単な統計作業ができます. Javascriptの MapReduceフレームは、MongoDB 2.2バージョンに導入された新しい統計フレームも含む.これ以外にも、外部統計ツールに対するインターフェースを提供しています.これは本明細書で説明するMongoDB-Hadoopのデータの中間です.文章の内容はMongoDB公式ブログから来ています.
原理図解
MongoDBとHadoopを組み合わせた方式は下図にないように、MongoDBはデータソースとして記憶されています.具体的な計算過程はHadoopで行われます.
この処理の流れは、Javaの代わりにPython、RubyとJavaScriptによってMapReduce関数を書いてデータ統計を行うことができます.
例
まずHadoop環境を準備し、Hadoop、MongoDBミドルウェアを取り付けます.その後、以下のようにデータ処理を行います.
1.データ準備
Twitter APIからオリジナルデータをMongoDBに導入する
map関数を書いてファイルのmapper.rbに保存します.
そして、reduce関数がファイルreducer.rbに保存されます.
実行スクリプトを作成し、下記の内容を書き込むと、上記のMapReduce方法で第1ステップで取得したデータを処理することができます.
原理図解
MongoDBとHadoopを組み合わせた方式は下図にないように、MongoDBはデータソースとして記憶されています.具体的な計算過程はHadoopで行われます.
この処理の流れは、Javaの代わりにPython、RubyとJavaScriptによってMapReduce関数を書いてデータ統計を行うことができます.
例
まず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方法で第1ステップで取得したデータを処理することができます.
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