1

onetwoの 2つのテキスト ファイルがある場合、次の違いは何ですか。

bz2 one two -c >out.bz2

...と...

猫 1 2 | 猫 1 2 | bzip2 -c >out.bz2

?

具体的には、pbzip2を使用して bz2 ファイルを生成し、それらを HDFS に配置してから、豚から読み取り、MAPREDUCE-477をヒットしています。Hadoop クラスターをバージョン 0.20 からアップグレードできません。非並列の bz2 実装を使用すると遅すぎるため、非ブロック圧縮アルゴリズムを使用したいと考えています。

連結された bz2 ファイルを連結されていないファイルに変換する方法はありますか? または、連結されていない bz2 ファイルを生成するように pbzip2 を変更するにはどうすればよいでしょうか?

ありがとう -

4

1 に答える 1

1

多くの場合、圧縮はパターンを短いものに置き換えることで機能します。たとえば、"Hello there, goodbye there" の場合、2 番目の "there" を最初の参照 (参照は元の 5 バイトよりも小さい) に置き換えることができます。

ここで、「こんにちは」を含むファイルと「さようなら」を含むファイルの 2 つのファイルがあるとします。連結してから圧縮すると、圧縮により処理するデータが増え、2 番目の "そこ" を最初のデータへの参照に置き換えることができます。両方のファイルを別々に圧縮してから連結すると、これは起こりません。

次に、連結してから圧縮すると、(2 番目のファイルの) 2 番目の "そこ" が (1 番目のファイルの) 最初の "そこ" への参照に置き換えられると想像してください。次に、圧縮データを 2 つの圧縮ファイルに分割して戻します。あなたが最終的に得られるのは、2番目のファイルがそのファイルに存在しないものへの参照を持っている2つのファイルであり、解凍することはできません.

注: 最新の圧縮技術は、上で説明したものよりもはるかに複雑です。説明するために多くのことを単純化しすぎています。

大量のデータを並行して圧縮および解凍する必要がある場合、それは実行できません。代わりに、大量のデータを小さな断片に分割する必要があります。小さな断片を個別に圧縮/解凍し、多くの小さな断片を並行して圧縮/解凍できるようにします。

于 2013-02-06T01:37:07.093 に答える