C++ ライブラリで処理する必要がある zip ファイルが多数あります。そのため、C++ を使用して Hadoop ストリーミング プログラムを作成しています。プログラムは zip ファイルを読み取り、解凍し、抽出されたデータを処理します。私の問題は次のとおりです。
私のマッパーは、正確に 1 つのファイルのコンテンツを取得できません。通常、2.4 ファイルまたは 3.2 ファイルのようなものを取得します。Hadoop はいくつかのファイルをマッパーに送信しますが、ファイルの少なくとも 1 つが不完全です。zip ファイルをこのように処理できないことはご存知でしょう。マップごとに 1 つのファイルを取得できますか? データの局所性を利用したいので、ファイル リストを入力として使用してプログラムから読み取りたくありません。
Hadoop が zip ファイルを分割しない場合、マップごとに複数の zip ファイルのコンテンツを受け入れることができます。2.3 ファイルのようなものではなく、正確に 1、2、3 ファイルを意味します。私のプログラムは、解凍されたデータを処理するために約800MBのデータファイルをロードする必要があるため、実際にはさらに良くなります。これはできますか?