トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

Python:Hadoop:MapReduceサンプル のバックアップソース(No.1)

*Python:Hadoop:MapReduceサンプル [#y3cf2253]

HadoopのMapReduceのプログラムをHadoopStreamingを使ってPythonで書いてみました。

Reducerの処理は一工夫必要だけど、簡単に書けます。

ログの集計とか、Hadoop使ってやるとほんと簡単に実行できるなーと実感した限りです。

***処理対象データの一部 [#w1fb1b7a]
こんな感じのデータが入力で、時刻(分)単位のレスポンスタイムの平均を求めたいです。

 2011/11/25-21:25:58.900,/mnt/dfs/da/C/0/000/007,4096,32
 2011/11/25-21:25:58.931,/mnt/dfs/da/C/0/000/008,4096,28
 2011/11/25-21:25:58.960,/mnt/dfs/da/C/0/000/009,4096,24
 2011/11/25-21:25:58.988,/mnt/dfs/da/C/0/000/010,4096,25
 ・・・・
 2011/11/26-02:00:07.704,/mnt/dfs/da/C/0/262/145,8192,32
 2011/11/26-02:00:07.754,/mnt/dfs/da/C/0/262/146,8192,32
 2011/11/26-02:00:07.803,/mnt/dfs/da/C/0/262/147,8192,32
 2011/11/26-02:00:07.855,/mnt/dfs/da/C/0/262/148,8192,34
 ・・・・
 2011/11/26-06:05:03.007,/mnt/dfs/da/C/0/458/759,16384,62
 2011/11/26-06:05:03.118,/mnt/dfs/da/C/0/458/760,16384,64
 2011/11/26-06:05:03.224,/mnt/dfs/da/C/0/458/761,16384,56
 ・・・・

:第一カラム|時刻(ミリ秒まで出力されている)
:第四カラム|レスポンスタイム(ミリ秒)


***ソース [#s43aec4d]

こんな感じです。

■Map.py
 #!/usr/bin/env python
 
 import sys
 
 # input comes from STDIN (standard input)
 for line in sys.stdin:
     line = line.strip()
     data = line.split(",")
     print '%s\t%s' % (data[0][0:16],data[3])


■