MapReduceっぽいものを触ってみたかったのでPythonで実装.参考にしたのは
Writing An Hadoop MapReduce Program In Python @ Michael G. Noll
http://www.michael-noll.com/tutorials/writing-an-hadoop-mapreduce-program-in-python/
あんま意味ないけどdefaultdictを使ったものと比較.
コード
以下mapper.pyとreducer.pyのコード.ほぼコピペ.
以下defaultdictのコード.
実行結果
https://github.com/downloads/satomacoto/Playground/count.zip
% head count.txt obscene house ナンバー・ナイン 1 A l'odeur du soleil sur les lavandes douces. もうむらさきにうれているげな 1 Abaisse'〕 アベッセ 4 Autant de pluie autant de tristesse, Paris qui m'oppresse! くさくさするほどあめがふる 1 Aux figuiers qui 〔mu^riront〕, au vent qui passera, みなみのくにではいちじくが 1 Belle-vue de Tombeau ベル・ビュウ・ド・トンボウ 2 Bonjour Monsieur ボンジュール・ムッシュウ 1 But this fold flow'ret climbs the hill この花こそは山にも攀ぢよ 1 Cafe' カフエ 1 Cafe' カツフエ 1 % wc count.txt 260652 834471 6590672 count.txt
速度比較
% time cat ruby_rev.txt | python mapper.py | sort -k1,1 | python reducer.py > count_mapreduce.txt cat ruby_rev.txt 0.00s user 0.07s system 0% cpu 59.480 total python mapper.py 7.74s user 0.06s system 13% cpu 59.485 total sort -k1,1 79.92s user 0.43s system 86% cpu 1:33.18 total python reducer.py > count_mapreduce.txt 10.48s user 0.12s system 11% cpu 1:33.17 total
% time cat ruby_rev.txt | python count_defaultdict.py | sort -k1,1 > count_defaultdict.txt cat ruby_rev.txt 0.00s user 0.07s system 1% cpu 6.228 total python count_defaultdict.py 6.90s user 0.12s system 98% cpu 7.131 total sort -k1,1 > count_defaultdict.txt 6.21s user 0.06s system 46% cpu 13.438 total
Hadoopではやってない.つーか入れてない.やってみるか…
No comments:
Post a Comment