2012-09-20 3 views
1

나는 Avro 형식으로 저장된 데이터를 읽는 EMR에서 돼지 스크립트를 실행 중입니다. 로컬에서 작업했지만 스크립트의 다른 부분이 EMR에서 작동하도록하려면 piggybank.jar를 되돌려 야했는데 0.10.0 대신 0.9.2를 사용했습니다. 변경 후 AvroStorage는 자동으로 모든 데이터를 읽지 못하고 0 개의 레코드 만 반환합니다. 로그 나 아무것도 언급하지 않았습니다. 스크립트는 다음과 같습니다.piggybank와 AvroStorage에서 EMR 문제가있는 돼지

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로 시도해 보았고, 그것도 작동하지 않았다.

Anothr note : 내가 describe a;이면 정확하게 스키마를 출력합니다.

답변

0

당신은 이미 이것을 고려했을 것입니다. 그러나 0.9.2에 종속 된 돼지 스크립트의 부분을 0.1.0에서 작동하도록 변경하면 더 빠를 수도 있습니다.

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 

당신은 서로의 위에 두 piggybanks를 적재 할 수 있습니다. piggybank-0.10.0 jar가 piggybank jar로 어떻게 움직이는 지에 대한 몇 가지 이상 함이 있습니다. 이것은 순서에 민감한 것 같지만,이 방법이 도움이되거나 최소한 다른 것을 시도해 볼 수 있습니다.