1

我在 EMR 上运行一个猪脚本,它读取以 Avro 格式存储的数据。它一直在本地运行,但为了让脚本的其他部分在 EMR 上运行,我不得不将我使用的 piggybank.jar 恢复为 0.9.2 而不是 0.10.0。进行该更改后,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

Not sure if this is still an issue for you, but a set of registers I use is:

REGISTER s3://..path../lib/piggybank-0.10.0.jar;
REGISTER file:/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

You can stack both piggybanks on top of each other. There's some weirdness with how the piggybank-0.10.0 jar plays with the piggybank jar - it seems to be order-sensitive, but hopefully this helps, or at least gives you something else to try.

于 2013-01-09T15:52:08.413 回答
0

您可能已经考虑过这一点 - 但如果您将猪脚本中依赖于 0.9.2 的部分更改为在 0.1.0 上工作,可能会更快。

于 2012-09-24T11:27:04.497 回答