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

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


Python:Hadoop:MapReduce?サンプル

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

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

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

処理対象データの一部

こんな感じのデータが入力で、時刻(分)単位のレスポンスタイムの平均を求めたいです。

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
・・・・
第一カラム
時刻(ミリ秒まで出力されている)
第四カラム
レスポンスタイム(ミリ秒)

ソース

こんな感じです。

■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])