我在emr上运行一个pig脚本,读取以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;
它正确地输出模式。
2条答案
按热度按时间exdqitrt1#
不确定这是否仍然是您的问题,但我使用的一组寄存器是:
你可以把两个Pig圈叠在一起。piggybank-0.10.0jar与piggybank-jar之间的关系有些奇怪——它似乎对订单敏感,但希望这能有所帮助,或者至少能给你一些其他的尝试。
eqqqjvef2#
您可能已经考虑过这一点了,但是如果您将pig脚本中依赖于0.9.2的部分更改为适用于0.1.0的部分,可能会更快。