1

Avro 形式で保存されたデータを読み取る EMR で豚のスクリプトを実行しています。ローカルで動作していましたが、スクリプトの他の部分を EMR で動作させるために、使用していた piggybank.jar を 0.10.0 ではなく 0.9.2 に戻す必要がありました。その変更を行った後、AvroStorage は暗黙のうちにデータの読み取りに失敗し、ゼロ レコードを返すだけです。ログなどには何も言及されていません。スクリプトは次のとおりです。

REGISTER ../../../lib/avro-1.7.0.jar                                                                    
REGISTER ../../../lib/json-simple-1.1.1.jar                                                             
REGISTER ../../../lib/jackson-core-asl-1.5.2.jar                                                        
REGISTER ../../../lib/jackson-mapper-asl-1.5.2.jar                                                      
REGISTER ../../../lib/piggybank.jar                                                                     
a = LOAD '/data/' USING org.apache.pig.piggybank.storage.avro.AvroStorage();
DUMP a;

また、piggybank.jar がバージョン 0.10.0 の場合、動作します。バージョン 0.9.2 の場合はありません。他のライブラリの別のバージョンを使用する必要がありますか? avro-1.5.3.jar で試してみましたが、これもうまくいきませんでした。

別の注意:そうするとdescribe a;、スキーマが正しく出力されます。

4

2 に答える 2

0

これがまだ問題であるかどうかはわかりませんが、私が使用するレジスタのセットは次のとおりです。

REGISTER s3://.. path ../ lib / piggybank-0.10.0.jar;
レジスタファイル:/home/hadoop/lib/pig/piggybank.jar;
REGISTER s3://.. path ../ lib / avro-1.7.1.jar;
REGISTER s3://.. path ../ lib / jackson-core-2.0.6.jar;
REGISTER s3://.. path ../ lib / jackson-mapper-lgpl-1.9.9.jar;
REGISTER s3://.. path ../ lib / json-simple-1.1.1.jar;
REGISTER s3://.. path ../ lib / joda-time-2.1.jar;
REGISTER s3://.. path ../ lib / snappy-java-1.0.4.1.jar

両方の貯金箱を積み重ねることができます。piggybank-0.10.0jarがpiggybankjarとどのように連携するかには、いくつかの奇妙な点があります。順序に敏感なようですが、これが役立つか、少なくとも何か他のことを試すことができれば幸いです。

于 2013-01-09T15:52:08.413 に答える
0

あなたはおそらくこれをすでに検討しているでしょう - しかし、0.9.2 に依存している pig スクリプトの部分を 0.1.0 で動作するように変更すると、より迅速になるかもしれません。

于 2012-09-24T11:27:04.497 に答える