Hadoop 带储液罐和储液罐的EMR故障清管器
我在EMR上运行一个pig脚本,它读取以Avro格式存储的数据。它一直在本地工作,但为了让脚本的其他部分在EMR上工作,我必须将我使用的piggybank.jar恢复为0.9.2,而不是0.10.0。在进行更改后,AvroStorage将以静默方式无法读取任何数据,只返回零条记录。日志中没有提到任何东西。以下是脚本:Hadoop 带储液罐和储液罐的EMR故障清管器,hadoop,apache-pig,elastic-map-reduce,amazon-emr,avro,Hadoop,Apache Pig,Elastic Map Reduce,Amazon Emr,Avro,我在EMR上运行一个pig脚本,它读取以Avro格式存储的数据。它一直在本地工作,但为了让脚本的其他部分在EMR上工作,我必须将我使用的piggybank.jar恢复为0.9.2,而不是0.10.0。在进行更改后,AvroStorage将以静默方式无法读取任何数据,只返回零条记录。日志中没有提到任何东西。以下是脚本: REGISTER ../../../lib/avro-1.7.0.jar
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,但也没有成功
另一个注意事项:如果我不
描述一个代码>它正确地输出模式。您可能已经考虑过这一点,但如果您将pig脚本中依赖于0.9.2的部分更改为适用于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
寄存器s3://…路径../lib/piggybank-0.10.0.jar;
注册文件:/home/hadoop/lib/pig/piggybank.jar;
寄存器s3://…路径../lib/avro-1.7.1.jar;
寄存器s3://…path../lib/jackson-core-2.0.6.jar;
寄存器s3://…路径../lib/jackson-mapper-lgpl-1.9.9.jar;
注册s3://…path../lib/json-simple-1.1.1.jar;
寄存器s3://…path../lib/joda-time-2.1.jar;
寄存器s3://…路径../lib/snappy-java-1.0.4.1.jar
你可以把两个猪圈叠在一起。piggybank-0.10.0jar如何与piggybank-jar配合使用有些奇怪——它似乎对订单敏感,但希望这能有所帮助,或者至少能给你一些其他的尝试