yuya-takeyama/mymr — Issue #1: Map/Reduce with MySQL
Author: yuya-takeyama
Created: 2012-01-25 01:32:12+00:00
State: open

MySQL を使ってカジュアルに Map/Reduce するためのフレームワーク.

- 入力はテーブル (SQL でフィルタ可能)
- Mapper はレコード 1 行を受け取り, Key/Value のペアを emit する
- emit すると作業用のテーブルに INSERT される
- key というカラムに Key が入り, value というカラムに value が JSON で入る
- Reducer は Key と, Value の配列を受ける
- Reducer で Value を返すことで, 出力テーブルに INSERT される

これらを, SQL を意識せずに, それでいて最適化のために SQL も使えるようにする.
(GROUP BY を使った finalize とか)

Reducer にデータを渡すための SQL は以下のようなイメージ.

```sql
SELECT
key,
GROUP_CONCAT(value SEPARATOR '\n') AS values
FROM
emitted_values
```

これで key と改行区切りの JSON のペアが受け取れるので, フレームワーク側で Value を配列にすることができる.

ビッグデータは無くとも, プログラミングモデルとして Map/Reduce を使いたい, というモチベーションがある.

ただし, それ MongoDB でできるよ, という話ではある.