Pig UDF em execução no EMR do AWS com java.lang.NoClassDefFoundError: org / apache / pig / LoadFunc

Estou desenvolvendo um aplicativo que tenta ler o arquivo de log armazenado em dólares do S3 e analisá-lo usando o Elastic MapReduce. Atual o arquivo de log tem o seguinte formato

------------------------------- 
COLOR=Black 
Date=1349719200 
PID=23898 
Program=Java 
EOE 
------------------------------- 
COLOR=White 
Date=1349719234 
PID=23828 
Program=Python 
EOE 

Então eu tento carregar o arquivo no meu script Pig, mas o Pig Loader não parece ser capaz de carregar meus dados, então eu tenho que criar meu próprio UDF. Como sou muito novo no Pig e no Hadoop, quero testar um script escrito por outros antes de escrever o meu, apenas para ter uma ideia de como o UDF funciona. Eu encontrei um daquihttp://pig.apache.org/docs/r0.10.0/udf.html, há um SimpleTextLoader. Para compilar este SimpleTextLoader, eu tenho que adicionar algumas importações, como

import java.io.IOException; 
import java.util.ArrayList;
import org.apache.hadoop.io.Text; 
import org.apache.hadoop.mapreduce.Job; 
import org.apache.hadoop.mapreduce.lib.input.TextInputFormat; 
import org.apache.hadoop.mapreduce.InputFormat; 
import org.apache.hadoop.mapreduce.RecordReader; 
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; 
import org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigSplit; 
import org.apache.pig.backend.executionengine.ExecException; 
import org.apache.pig.data.Tuple; 
import org.apache.pig.data.TupleFactory;
import org.apache.pig.data.DataByteArray; 
import org.apache.pig.PigException; 
import org.apache.pig.LoadFunc;

Então, descobri que preciso compilar esse arquivo. Eu tenho que baixar svn e porco correndo

sudo apt-get install subversion 
svn co http://svn.apache.org/repos/asf/pig/trunk 
ant

Agora eu tenho um arquivo pig.jar, então eu tento compilar este arquivo.

javac -cp ./trunk/pig.jar SimpleTextLoader.java 
jar -cf SimpleTextLoader.jar SimpleTextLoader.class 

Ele compila com sucesso, e eu digito Pig entrando em grunhido, em grunhido eu tento carregar o arquivo, usando

grunt> register file:/home/hadoop/myudfs.jar
grunt> raw = LOAD 's3://mys3bucket/samplelogs/applog.log' USING myudfs.SimpleTextLoader('=') AS (key:chararray, value:chararray); 

2012-12-05 00:08:26,737 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 2998: Unhandled internal error. org/apache/pig/LoadFunc Details at logfile: /home/hadoop/pig_1354666051892.log

Dentro do pig_1354666051892.log, ele tem

Pig Stack Trace
---------------
ERROR 2998: Unhandled internal error. org/apache/pig/LoadFunc

java.lang.NoClassDefFoundError: org/apache/pig/LoadFunc

Eu também tento usar outro UDF (UPPER.java) dehttp://wiki.apache.org/pig/UDFManual, e eu ainda estou recebendo o mesmo erro, tente usar o método UPPER. Você pode por favor me ajudar, qual é o problema aqui? Muito obrigado!

ATUALIZAÇÃO: Experimentei o Pig.jar do EMR em /home/hadoop/lib/pig/pig.jar e obtenho o mesmo problema.

questionAnswers(2)

yourAnswerToTheQuestion