Pig UDF se ejecuta en AWS EMR con java.lang.NoClassDefFoundError: org / apache / pig / LoadFunc

Estoy desarrollando una aplicación que intenta leer el archivo de registro almacenado en bucles S3 y analizarlo utilizando Elastic MapReduce. Actual el archivo de registro tiene el siguiente formato

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

Así que trato de cargar el archivo en mi script de Pig, pero el Pig Loader incorporado no parece ser capaz de cargar mis datos, así que tengo que crear mi propio UDF. Ya que soy bastante nuevo en Pig y Hadoop, quiero probar el guión que escribieron otros antes de escribir el mío, solo para ver cómo funciona el UDF. Encontré uno de aquíhttp://pig.apache.org/docs/r0.10.0/udf.html, hay un SimpleTextLoader. Para compilar este SimpleTextLoader, tengo que agregar algunas importaciones, 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;

Luego, descubrí que necesito compilar este archivo. Tengo que descargar svn y pig running

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

Ahora tengo un archivo pig.jar, entonces trato de compilar este archivo.

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

Se compila correctamente, y escribo en Pig entrando en gruñido, en gruñido intento cargar el archivo, 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 del pig_1354666051892.log, tiene

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

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

También trato de utilizar otro UDF (UPPER.java) a partir dehttp://wiki.apache.org/pig/UDFManualY estoy teniendo el mismo error al intentar utilizar el método superior. ¿Me pueden ayudar, por favor, cuál es el problema aquí? ¡Muchas gracias!

ACTUALIZACIÓN: probé EMR build-in Pig.jar en /home/hadoop/lib/pig/pig.jar, y obtuve el mismo problema.

Respuestas a la pregunta(2)

Su respuesta a la pregunta