Amazon Elastic MapReduce を使った感じ
個人でも,気軽に大規模並列処理を試せます.一般的な個人には MapReduce の使いどころがないかもしれませんが,研究をしている方々には面白い素材になるのではないでしょうか.
これまでの簡単な実験では,コーパスから文字 n-gram を抽出するというタスクを試していました.とりあえず,計算機の割り当てを増やすことで,処理時間が短くなっていくということを確認できています.
# 今のところ,Mapper には何の工夫もしていないこと,ローカルでは C++ で専用に開発したプログラムが使えること,などの差があるため,Amazon Elastic MapReduce で最も安い計算機を 10 台割り当てるより,ローカルで処理した方が高速です.
他に思ったこととしては,Python を使うと,とても簡単に Unicode (UTF-8) の正規化ができて便利ということでしょうか.
import codecs import sys import unicodedata for line in sys.stdin: try: unicode_line = u' '.join(unicode(line, 'utf-8').split()) except: # Ignores line which contains invalid bytes. continue # Normalizes unicode string. normalized_line = unicodedata.normalize('NFKC', unicode_line)