2011年07月23日
Hadoop で実行時に作ったオブジェクトを Mapper とかで使いたい
のだけど,良いやり方が思いつかない.
ByteArrayOutputStream を ObjectOutputStream に食わせてオブジェクトを書きだして,そいつを Apache Commons Codec の Base64 に食わして String にして,それを Configuration にセットして Mapper の setup メソッド内でオブジェクトを復元して…… とかやってみたのだけど,これって頭悪い気がする.
でもまあ,とりあえずこれで実行時に組み立てた計算を汎用的な Mapper にやらせるのが素直にできるようになったから良しとしようか.DistributedCache を使ってファイルにバイナリで書きだして共有するってのもアリな気もするけど面倒なのでやめた.
さて,次は InputFormat に手を入れて連続する複数のKey/Valueペアを一気に mapper に食わせるようにするか.commutative でない演算子での集約をするのに combiner は使えないし reducer に全部やらせるのもアホだし mapper で適度に順番通りに潰せるのが望ましい.
- Comments: 0
- TrackBack (Close): -