EMR上的猪有皮球和AvroStorage的麻烦

时间:2012-09-20 22:39:17

标签: hadoop apache-pig elastic-map-reduce amazon-emr avro

我正在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,则不会。我应该使用其他任何库的不同版本吗?我尝试使用av​​ro-1.5.3.jar,但也没用。

Anothr note:如果我describe a;,它会正确输出架构。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

不确定这是否仍然是一个问题,但我使用的一组寄存器是:

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

你可以将两个皮球堆叠在一起。 piggybank-0.10.0 jar如何与piggybank jar一起玩有些奇怪 - 它似乎是对顺序敏感的,但希望这会有所帮助,或者至少会给你一些其他尝试。