UDF Pig работает в AWS EMR с java.lang.NoClassDefFoundError: org / apache / pig / LoadFunc

Я разрабатываю приложение, которое пытается прочитать файл журнала, хранящийся в долларах S3, и проанализировать его с помощью Elastic MapReduce. Текущий файл журнала имеет следующий формат

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

Поэтому я пытаюсь загрузить файл в мой скрипт Pig, но встроенный Pig Loader неКажется, я не могу загрузить свои данные, поэтому я должен создать свой собственный UDF. Поскольку я довольно новичок в Pig и Hadoop, я хочу попробовать сценарий, написанный другими, прежде чем писать свой собственный, просто чтобы узнать, как работает UDF. Я нашел один отсюдаhttp://pig.apache.org/docs/r0.10.0/udf.htmlесть SimpleTextLoader. Чтобы скомпилировать этот SimpleTextLoader, я должен добавить несколько импортов, так как

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;

Затем я узнал, что мне нужно скомпилировать этот файл. Я должен скачать SVN и свинья работает

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

Теперь у меня есть файл pig.jar, затем я пытаюсь скомпилировать этот файл.

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

Он компилируется успешно, и я набираю в Pig ввод grunt, в grunt я пытаюсь загрузить файл, используя

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

Внутри pig_1354666051892.log, он имеет

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

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

Я также пытаюсь использовать другой UDF (UPPER.java) изhttp://wiki.apache.org/pig/UDFManual, и я все еще получаю ту же ошибку при попытке использовать метод UPPER. Можете ли вы помочь мне, чтопроблема здесь? Большое спасибо!

ОБНОВЛЕНИЕ: я попробовал встроить Pig.jar в EMR в /home/hadoop/lib/pig/pig.jar, и получил ту же проблему.