2012-04-17 7 views

答えて

4

PigStorageはファイルが圧縮されていることを認識します(拡張子は.gzですが、これはPigTextInputFormatが拡張するTextInputFormatに実際に実装されています)が、その後はtarファイルを処理します。あなたはタールでファイル間のヘッダ行を扱うことができるしている場合であるとして、あなただけのPigStorageを使用することができ、そうでなければ、各ファイル

間のtarヘッダー行を除去処理するためにPigTextInputFormatの独自の拡張機能を記述する必要があります
5

@ ChrisWhiteの答えは技術的に正しいので、私の代わりに彼の答えを受け入れるべきです(少なくともIMO)。

tar.gzファイルからHadoopを取得する必要があります。 Gzipファイルは分割可能ではないので、gzipファイルが大きい場合は、マッパーでホットスポットが表示されます。たとえば、ファイルが.tar.gzで100GBの場合、計算を分割することはできません。

もう一方の手が小さいとしましょう。この場合、ブタは一緒に集めるという素晴らしい仕事をして、分割の問題はなくなります。これは、NameNodeを持つたくさんの小さなファイルを扱っているという事実の欠点があります。また、ファイルは小さいので、ファイルをより合理的な形式に改造することは、比較的安価に行う必要があります。

だから、どのような形式あなたはにファイルを再公式化する必要がありますか?良い質問!

  • ただ、一つの大きなブロック・レベルの圧縮 シーケンスファイルにそれらのすべてを連結することは最も難しいが、パフォーマンスの 面で最もやりがいのあることかもしれません。
  • もう1つは、圧縮 を完全に無視し、それらのファイルを爆発させるか、少なくとも を連結します(圧縮なしのパフォーマンスヒットが表示されます)。
  • 最後に、あなたは〜100MBのチャンクにファイルをブロブができ、その後、それらをgzip。

私は貯金箱にtarボールローダーのいくつかの並べ替えを書くことは完全に合理的であると思うが、私は個人的にちょうどかなり異なる方法でデータをレイアウトします。

関連する問題