Hadoopは基本的にテキストファイルを扱うようになっている。バイナリーデータを使いたければSequenceFileを使うのが一番簡単だと思う。
InputFormatやRecordReaderやInputSplitを独自実装すればバイナリーファイルを読み込めるだろうけど、面倒だわな^^;
で、Asakusa FrameworkにはBinaryStreamFormatというクラスがあり、これを継承したクラスを作ることでバイナリーファイルを扱うことが出来る。実装しなければならない部分はあるけれど、素のHadoopよりは簡単な気がする。
その実装も、主な部分はバイナリーデータとAsakusaFWのデータモデルの各プロパティーとの移送部分のコーディングなので、少々面倒ではあるが、難しくはない。
(実装の考え方としては、SequenceFileFormatを使って独自SequenceFileを扱うのと同じ)
(ちょっと追記)
バイナリーファイル読み込み部分で、offsetの使い方を勘違いしていたので修正。
streamは既にそのオフセット分スキップされた状態で渡されるので、自分でスキップする必要は無いらしい。
ただしoffsetは(やはり)必ずしもレコードサイズの倍数とは限らないので、レコード境界に合うよう、その分だけはスキップしてやる必要がある。
※コメント投稿者のブログIDはブログ作成者のみに通知されます