私はあなたの質問についてまだはっきりしていないので、この質問に答えます。私が近いかどうか教えてください:
map/reduce パラダイムを使用して大きな gzip ファイルを解凍するにはどうすればよいですか?
gzip ファイルがこのために特別に準備されていない限り、解凍ジョブをマップすることはできません。解凍は連続して行う必要があります。bzip2 で圧縮されたデータは既に個別に圧縮解除可能なブロックになっていますが、それらをポイントするために、すべてをシリアルに圧縮解除していないと、ブロックを見つけることができず、おそらく目的に反します。
あなたはLZOの「コンテナ」フォーマットについて言及していますが、私があなたを正しく理解していれば、gzipとbzip2でも同様に機能します。
これらの形式のいずれについても、分割して圧縮することにより、並列解凍用の gzip ストリームを準備できます。たとえば、各部分に 1 メガバイトまたは数メガバイトを使用して、圧縮を大幅に低下させないようにし、圧縮時に構築され、圧縮データ ファイルとともに送信または保存された部分へのインデックスを維持します。
gzip ストリームの連結自体は、個々のストリームの解凍の連結に解凍する有効な gzip ストリームです。bzip2 形式の場合も同様です。bzip2 の場合、断片は 900K の倍数にする必要があります。これにより、圧縮率の効率が低下する部分ブロックがなくなります。
その後、そのような gzip または bzip2 ファイルを作成し、各 gzip または bzip2 ストリームの開始位置のファイル オフセットのリストを保持できます。次に、reduce ステップが圧縮されていない結果を正しい順序で連結するだけの、それらの断片をマップ化できます。