私はAmazonのElasticMap-ReduceでPigを使用してバッチ分析を行っています。私の入力ファイルはS3にあり、1行に1つのJSONディクショナリで表されるイベントが含まれています。elephantbirdJsonLoaderライブラリを使用して入力ファイルを解析します。ここまでは順調ですね。
インタラクティブなPigセッションでローカルファイルシステムまたはhdfsに保存されている大きなファイルの処理で問題が発生しています。入力ファイルが分割されるのに十分な大きさである場合、分割の1つだけがelephantbirdによって処理され、分割の最後にエラーメッセージなしで処理が停止するように見えます。S3からの入力をストリーミングする場合(S3入力でファイルが分割されない場合)、またはファイルをPigが直接読み取り可能な形式に変換する場合、同じ問題は発生しません。
具体的な例として、833,138行のファイルは379,751行までしか処理されません(Pigで完了率を見ると、50%までスムーズに進み、その後100%にジャンプします)。また、400,000行のファイルを試してみたところ、正常に処理されました。
だから私の質問は:なぜ象の鳥によって1つの分割だけが処理されるのですか?インタラクティブモードのPigがどのように機能するのか誤解していますか、それとも何かひどく間違っていることがありますか?