なんかreducerあった。泣ける。

真面目に考えたけどだいたい同じようなことをやってる人がいましたの巻。パッチがあたってたので試してみました。


こちらを。

http://code.google.com/p/appengine-mapreduce/issues/detail?id=49&colspec=ID%20Type%20Status%20Priority%20Component%20Owner%20Summary

Sort/Group指定を一つのプロパティでやる制約をつけて、インデックス爆発さんのご機嫌を伺ってる感じです。まあ妥当かなと。


まああれなので、これについてるこのパッチをあててあれこれ試してみました。っていうかカウントですが。

http://appengine-mapreduce.googlecode.com/issues/attachment?aid=-4538251780611741176&name=reducer-patch2&token=a2e48a0171aa9b48f820e98daa004017


exampleで800件データ生成しているやつがあったので、そいつがインプットになる感じです。中間データは、上記のS/G指定がいるので、切ってやる必要があります。あと、動作確認はローカルだけです。

感想など。
・jobの設定が煩雑。しょうがないけど文字列与えるのはやだ。
・中間データのモデリングは割といい感じ。楽だし、この程度でreducerが使えるならいいんじゃないかと思います。
・まあ、今回みたいにプロパティが一個なのをわざわざ切るのはめんどい感じですね。
・mapperのexampleもそうなんですが、なんでDatastoreOutputFormatとかないの?datastore.putとかが前提?
・reducerはcontextの中身がからっぽい。なんか設定いるかもだけど、なんだろ、writeもcounterも通らないのでとりあえずsysoutです。NullOutputFormat指定してないからかもですが、デフォルトそれでとるようにしてるっぽいし、うーん。

※ ((AppEngineContext) context).getMutationPool().put(foo); とかするっぽい。

ということで、先人はいるけど改善すべきことはあるので、あれだったらまたなんかやるかもです。